1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
//! # 示例:连接外部 Chrome(WebSocket transport)
//!
//! 演示如何通过 `ws://` 连接到一个正在运行的 Chrome / Chromium 实例
//! (用 `--remote-debugging-port=9222` 启动)。
//!
//! ## 启动 Chrome
//!
//! ```sh
//! google-chrome \
//! --headless \
//! --remote-debugging-port=9222 \
//! --disable-gpu \
//! --no-sandbox
//! ```
//!
//! ## 运行
//!
//! ```sh
//! cargo run --example external_chrome -p bao_cdp_client
//! ```
//!
//! ## 输出
//!
//! ```text
//! WebSocket URL: ws://127.0.0.1:9222
//! Scheme: ws
//! Kind: WebSocket
//! Ready to dispatch CDP commands...
//! ```
//!
//! ## 实际场景
//!
//! 连接成功后,典型工作流:
//!
//! ```no_run
//! use bao_cdp_client::Browser;
//! use bao_cdp_client::types::ScreenshotFormat;
//!
//! fn main() -> Result<(), Box<dyn std::error::Error>> {
//! let browser = Browser::connect("ws://127.0.0.1:9222")?;
//! let mut transport = browser.build_websocket_transport()?;
//!
//! // 发送 CDP 命令(Target.createTarget → 新建 tab)
//! let resp = transport.send_command(
//! "Target.createTarget",
//! serde_json::json!({ "url": "https://example.com" }),
//! None,
//! )?;
//! let target_id = resp["targetId"].as_str().unwrap();
//! println!("Created target: {}", target_id);
//!
//! Ok(())
//! }
//! ```
//!
//! @trace REQ-BAO-API-001 [level:library]
//! @trace REQ-BAO-API-002 [interface:Transport]
//! @trace REQ-BAO-API-008 [level:library]
use Browser;