docs.rs failed to build bao_cdp_client-0.1.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
bao_cdp_client
统一浏览器控制客户端,基于 CDP (Chrome DevTools Protocol)。
通过 URL scheme 自动路由到内置 servo 或外部 Chrome:
| Scheme | Transport | 适用场景 |
|---|---|---|
memory://bao |
InMemoryTransport | 同进程 servo,零网络往返 |
ws://host:port |
WebSocketTransport | 外部 Chrome / Chromium |
http://host:port |
WebSocketTransport | HTTP discover → 自动转 ws:// |
设计目标
- 统一 API:不论连内嵌 servo 还是远端 Chrome,顶层 API 一致
- Playwright 风格:Browser/BrowserContext/Page/Frame/ElementHandle 等高层抽象
- 零 tokio:用
bun_event_loop调度收发,与 Bao 运行栈一致 - 完整类型:所有公共 API 含 doc comment + 示例 + 错误码
快速开始
连接内嵌 servo 并打开页面:
use bao_cdp_client::Browser;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// 同进程 servo(memory:// scheme 路由到 InMemoryTransport)
let browser = Browser::connect("memory://bao")?;
assert!(browser.is_in_memory());
Ok(())
}
连接外部 Chrome:
use bao_cdp_client::Browser;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let browser = Browser::connect("ws://127.0.0.1:9222")?;
assert!(browser.is_websocket());
Ok(())
}
模块组织
- [
browser]:Browser::connect(url)入口 - [
transport]: Transport trait + InMemoryTransport / WebSocketTransport - [
connection]: Connection 配置与 URL 解析 - [
bridge]: servo RDP 桥接(CDPRdpBridge + servo 7 事件 → CDP event) - [
api]: 高层 API 类(Page/Frame/ElementHandle/...) - [
error]: ConnectError + CdpError
@trace REQ-BAO-API-001 [level:library] @trace REQ-BAO-API-008 [level:library]