rust_drission 0.1.3

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.
Documentation

rust_drission

Rust License: MIT

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.


Features

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)

Installation

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.


Quick Start(与 DrissionPage 一致)

使用 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


Documentation & Examples

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_js

Optional env vars: RUST_DRISSION_PORT, RUST_DRISSION_CHROME.


Repository


License

MIT License. See LICENSE.