use drission::cdp::{ChromiumBrowser, cft_platform, download_chrome_for};
#[tokio::main]
async fn main() -> drission::Result<()> {
tracing_subscriber::fmt()
.with_env_filter(
tracing_subscriber::EnvFilter::try_from_default_env()
.unwrap_or_else(|_| "drission=info".into()),
)
.init();
let headless = std::env::var("HL").map(|v| v != "0").unwrap_or(true);
let platform = cft_platform()?;
println!("[*] 当前平台 Chrome for Testing 标记 = {platform}");
println!("[*] 确保当前平台 Chrome 已下载(首次约 180–200 MB,之后命中缓存秒回)…");
let exe = download_chrome_for(platform, "Stable").await?;
println!("[*] Chrome 可执行文件: {}", exe.display());
if std::env::var("DRISSION_PREFETCH_WIN").as_deref() == Ok("1") {
println!("[*] 预取 win64 Chrome(分发用,不在本机运行)…");
let win = download_chrome_for("win64", "Stable").await?;
println!("[*] win64 Chrome: {}", win.display());
}
println!("[*] 用下载的 Chrome 启动 CDP(headless={headless})…");
let browser = ChromiumBrowser::launch_with(&exe, headless).await?;
let tab = browser.new_tab(Some("about:blank")).await?;
tab.get("https://example.com").await?;
let title = tab.title().await?;
let h1 = tab.ele_text("h1").await?.unwrap_or_default();
println!("[*] title = {title:?}");
println!("[*] h1 = {h1:?}");
let ua = tab.run_js("navigator.userAgent").await?;
println!("[*] UA = {ua}");
browser.quit().await?;
let ok = title.contains("Example") && h1.contains("Example");
if ok {
println!("==== ALL CHECKS PASSED(下载的 Chrome 驱动成功)====");
Ok(())
} else {
Err(drission::Error::msg(format!(
"校验失败: title={title:?} h1={h1:?}"
)))
}
}