Browser automation library for Rust via Chrome DevTools Protocol (CDP). Connect or launch Chrome, control pages/elements, run JS, cookies, screenshots, request/response listening. API inspired by DrissionPage.
| Feature | Description |
|---|---|
| Browser | connect to existing Chrome or launch / connect_or_launch with BrowserConfig |
| Page | Navigate, title/URL/HTML, evaluate JS, find elements, click/input, wait helpers |
| Element | Click, text/HTML/attr, input/clear, focus/hover, visibility, children, screenshot |
| Locators | css, xpath, text, attr, id, class, tag, or bare CSS (e.g. #id, .class) |
| Cookie | Get, set, delete |
| Screenshot | Full page and element region |
| Listener | Separate CDP connection to collect request/response data (including body) |
| Stealth | stealth_inject (e.g. navigator.webdriver = false) |
Add to your Cargo.toml:
[dependencies]
rust_drission = { git = "https://github.com/ningning0111/rust_drission" }Or with a specific version/tag when available:
rust_drission = { git = "https://github.com/ningning0111/rust_drission", tag = "v0.1.0" }Requirements: Chrome or Chromium installed, or set RUST_DRISSION_CHROME to the browser executable path.
使用 ChromiumPage 一步连接/启动浏览器并控制当前标签页(与 Python ChromiumPage() 用法一致):
use rust_drission::{ChromiumPage, BrowserConfig, CdpError};
fn main() -> Result<(), CdpError> {
let page = ChromiumPage::new(BrowserConfig::new())?;
page.get("https://www.baidu.com")?; // 同 DrissionPage 的 get(url)
println!("title: {}", page.title()?);
page.input("#kw", "Rust")?;
page.click("#su")?;
if let Some(el) = page.ele("css:#kw")? { // 同 DrissionPage 的 ele(locator)
let _tag = el.tag()?;
}
Ok(())
}或使用 Browser + Page 分步控制:
use rust_drission::{Browser, BrowserConfig, CdpError};
fn main() -> Result<(), CdpError> {
let config = BrowserConfig::new().set_local_port(9222).headless(false);
let mut browser = Browser::connect_or_launch(config)?;
let page = browser.new_tab()?;
page.get("https://www.baidu.com")?; // 或 page.goto(...)
println!("title: {}", page.title()?);
page.input("#kw", "Rust")?;
page.click("#su")?;
browser.close();
Ok(())
}To attach to an already running browser, start Chrome with remote debugging first:
chrome --remote-debugging-port=9222| Link | Description |
|---|---|
| Usage (USAGE.md) | Full API usage: browser, page, element, locators, JS, cookies, screenshot, listener |
| API comparison | Differences and missing APIs vs Python DrissionPage |
| Examples | basic, page_ops, run_js, listen_request_response |
Run examples:
cargo run --example basic
cargo run --example run_jsOptional env vars: RUST_DRISSION_PORT, RUST_DRISSION_CHROME.
- Source: github.com/ningning0111/rust_drission
- Homepage: github.com/ningning0111/rust_drission
MIT License. See LICENSE.