2026/2/22 23:35:08
网站建设
项目流程
企业网站方案,百度的网站名,如何做网站的薪酬调查,做平面设计需要学什么软件Playwright02-CDP playwright自动化开发记录#xff0c;学习BrowserUse的时候涉及到playwright和udp-use的知识点 1-核心知识点
1-运行playwright第一个demo 2-参考网址
1-用Playwright实现接口自动化测试#xff1a;https://www.cnblogs.com/wzzkaifa/p/191135782-playwri…Playwright02-CDPplaywright自动化开发记录学习BrowserUse的时候涉及到playwright和udp-use的知识点1-核心知识点1-运行playwright第一个demo2-参考网址1-用Playwright实现接口自动化测试https://www.cnblogs.com/wzzkaifa/p/191135782-playwright开源仓库https://github.com/microsoft/playwright3-动手实操1-UV环境搭建# 1-uv环境搭建uv python pin3.11.4 uv init python_playwrightcdpython_playwright uv venvsource.venv/bin/activate uvaddpython-dotenv pydantic playwright# 2-安装playwright-刷新应用uvaddplaywrightsource.venv/bin/activate# 3-playwright安装chromium(当前只安装了chrome浏览器)playwrightinstallchromium2-CDP接口开发cdp-use是一个为 Chrome DevTools ProtocolCDP生成的类型安全 Python 客户端库方案 A完全交给 Playwright不关心真实 WebSocket 地址只拿到“默认上下文里已有的页面”importtimefromplaywright.sync_apiimportsync_playwrightwithsync_playwright()asp:# 1. 启动浏览器并强制开启远程调试端口browserp.chromium.launch(headlessFalse,args[--remote-debugging-port9222]# 开启 CDP 端口)# 2. 新建标签页pagebrowser.new_page()# 3. 打开目标网址web_urlhttps://www.baidu.com/try:# 设置更长的超时时间并添加异常处理page.goto(web_url,timeout60000)print(浏览器 成功打开浏览器,web_url)exceptExceptionase:print(f页面加载失败:{e})browser.close()exit(1)# 4. 简单等待方便肉眼观察time.sleep(3)# 5. 直接通过 playwright 自己的连接拿到同一浏览器try:browser2p.chromium.connect_over_cdp(http://localhost:9222)browser_contextsbrowser2.contexts[0]print(browser_contexts响应数据结构)print(browser_contexts)print(browser_contexts响应数据结构\n)default_ctx_pagebrowser_contexts.pages[0]# 默认上下文里已有的页面print(默认页面标题,default_ctx_page.title())# 5. 关闭browser2.close()exceptExceptionase:print(f连接到CDP时出错:{e})finally:browser.close()运行结果示例已连接到 pydev 调试器(内部版本号 231.9225.15)浏览器 成功打开浏览器 https://www.baidu.com/ browser_contexts响应数据结构 BrowserContext browserBrowser typeBrowserType namechromium executable_path/Users/rong/Library/Caches/ms-playwright/chromium-1194/chrome-mac/Chromium.app/Contents/MacOS/Chromium version141.0.7390.37 browser_contexts响应数据结构方案 BPlaywright 控制WebSocket 地址既要 Playwright 控制也要“真实的 WebSocket 地址”importjsonimporttimeimportrequestsfromplaywright.sync_apiimportsync_playwrightwithsync_playwright()asp:# 1. 启动浏览器并强制开启远程调试端口browserp.chromium.launch(headlessFalse,args[--remote-debugging-port9222]# 开启 CDP 端口)# 2. 新建标签页pagebrowser.new_page()# 3. 打开目标网址web_urlhttps://www.baidu.com/try:# 设置更长的超时时间并添加异常处理page.goto(web_url,timeout60000)print(浏览器 成功打开浏览器,web_url)exceptExceptionase:print(f页面加载失败:{e})browser.close()exit(1)# 4. 简单等待方便肉眼观察time.sleep(3)# 5. 自己取一次 /json/version 拿到 webSocketDebuggerUrltry:resprequests.get(http://localhost:9222/json/version,timeout5)print(json_version响应数据结构)print(json.dumps(resp.json(),indent2,ensure_asciiFalse))print(json_version响应数据结构\n)ws_urlresp.json()[webSocketDebuggerUrl]print(浏览器 WebSocket 地址,ws_url)# 如果还想继续用 playwright 操纵同一浏览器browser2p.chromium.connect_over_cdp(http://localhost:9222)default_pagebrowser2.contexts[0].pages[0]print(默认页面标题,default_page.title())browser2.close()exceptrequests.exceptions.RequestExceptionase:print(f无法连接到调试地址:{e})exceptExceptionase:print(f处理调试连接时出错:{e})finally:browser.close()运行结果示例已连接到 pydev 调试器(内部版本号 231.9225.15)浏览器 成功打开浏览器 https://www.baidu.com/ json_version响应数据结构 { Browser: Chrome/141.0.7390.37, Protocol-Version: 1.3, User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36, V8-Version: 14.1.146.11, WebKit-Version: 537.36 (9f043f63b0e5b728c8d09f3e3ddfc1681a4bd58e), webSocketDebuggerUrl: ws://localhost:9222/devtools/browser/27e882e5-8999-4a81-8d1f-9092e6698d61 } json_version响应数据结构 浏览器 WebSocket 地址 ws://localhost:9222/devtools/browser/27e882e5-8999-4a81-8d1f-9092e6698d61 默认页面标题 百度一下你就知道至此你既拿到了“真实的 CDP WebSocket 地址”也通过 Playwright 取得了“默认上下文里已有的页面”。