use drission::prelude::*;
#[tokio::main]
async fn main() -> drission::Result<()> {
let headless = std::env::var("HL").map(|v| v != "0").unwrap_or(true);
let browser = if let Ok(url) = std::env::var("CONNECT") {
println!("[*] 接管已开浏览器 {url}");
ChromiumBrowser::connect(&url).await?
} else {
println!("[*] 启动 Chrome(headless={headless})");
ChromiumBrowser::launch(ChromiumOptions::new().headless(headless)).await?
};
let tab = browser.new_tab(Some("about:blank")).await?;
tab.get("https://example.com").await?;
println!("[*] title = {:?}", tab.title().await?);
println!("[*] url = {:?}", tab.url().await?);
println!("[*] 1+2 = {}", tab.run_js("1+2").await?);
println!("[*] h1 = {:?}", tab.ele_text("h1").await?);
let png = tab.screenshot_bytes().await?;
println!(
"[*] 截图 {} bytes(头 {:02X?})",
png.len(),
&png[..png.len().min(4)]
);
browser.quit().await?;
println!("==== CDP demo 完成 ====");
Ok(())
}