Skip to content

NingNing0111/rust_drission

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

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.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages