news 2026/6/10 11:05:23

Playwright02-CDP

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Playwright02-CDP

Playwright02-CDP

playwright自动化开发记录,学习BrowserUse的时候涉及到playwright和udp-use的知识点


1-核心知识点

  • 1-运行playwright第一个demo

2-参考网址

  • 1-用Playwright实现接口自动化测试:https://www.cnblogs.com/wzzkaifa/p/19113578
  • 2-playwright开源仓库:https://github.com/microsoft/playwright

3-动手实操

1-UV环境搭建

# 1-uv环境搭建uv python pin3.11.4 uv init python_playwright&&cdpython_playwright uv venv&&source.venv/bin/activate uvaddpython-dotenv pydantic playwright# 2-安装playwright-刷新应用uvaddplaywrightsource.venv/bin/activate# 3-playwright安装chromium(当前只安装了chrome浏览器)playwrightinstallchromium

2-CDP接口开发

cdp-use是一个为 Chrome DevTools Protocol(CDP)生成的类型安全 Python 客户端库


方案 A:完全交给 Playwright

不关心真实 WebSocket 地址,只拿到“默认上下文里已有的页面”

importtimefromplaywright.sync_apiimportsync_playwrightwithsync_playwright()asp:# 1. 启动浏览器,并强制开启远程调试端口browser=p.chromium.launch(headless=False,args=["--remote-debugging-port=9222"]# 开启 CDP 端口)# 2. 新建标签页page=browser.new_page()# 3. 打开目标网址web_url="https://www.baidu.com/"try:# 设置更长的超时时间,并添加异常处理page.goto(web_url,timeout=60000)print("浏览器 成功打开浏览器:",web_url)exceptExceptionase:print(f"页面加载失败:{e}")browser.close()exit(1)# 4. 简单等待,方便肉眼观察time.sleep(3)# 5. 直接通过 playwright 自己的连接拿到同一浏览器try:browser2=p.chromium.connect_over_cdp("http://localhost:9222")browser_contexts=browser2.contexts[0]print("=======browser_contexts响应数据结构========")print(browser_contexts)print("=======browser_contexts响应数据结构========\n")default_ctx_page=browser_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 browser=<Browser type=<BrowserType name=chromium executable_path=/Users/rong/Library/Caches/ms-playwright/chromium-1194/chrome-mac/Chromium.app/Contents/MacOS/Chromium> version=141.0.7390.37>> =======browser_contexts响应数据结构========

方案 B:Playwright 控制+WebSocket 地址

既要 Playwright 控制,也要“真实的 WebSocket 地址”

importjsonimporttimeimportrequestsfromplaywright.sync_apiimportsync_playwrightwithsync_playwright()asp:# 1. 启动浏览器,并强制开启远程调试端口browser=p.chromium.launch(headless=False,args=["--remote-debugging-port=9222"]# 开启 CDP 端口)# 2. 新建标签页page=browser.new_page()# 3. 打开目标网址web_url="https://www.baidu.com/"try:# 设置更长的超时时间,并添加异常处理page.goto(web_url,timeout=60000)print("浏览器 成功打开浏览器:",web_url)exceptExceptionase:print(f"页面加载失败:{e}")browser.close()exit(1)# 4. 简单等待,方便肉眼观察time.sleep(3)# 5. 自己取一次 /json/version 拿到 webSocketDebuggerUrltry:resp=requests.get("http://localhost:9222/json/version",timeout=5)print("=======json_version响应数据结构========")print(json.dumps(resp.json(),indent=2,ensure_ascii=False))print("=======json_version响应数据结构========\n")ws_url=resp.json()["webSocketDebuggerUrl"]print("浏览器 WebSocket 地址:",ws_url)# 如果还想继续用 playwright 操纵同一浏览器browser2=p.chromium.connect_over_cdp("http://localhost:9222")default_page=browser2.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 取得了“默认上下文里已有的页面”。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 18:28:05

3分钟快速上手:XUnity.AutoTranslator终极游戏翻译解决方案

还在为看不懂外文游戏而烦恼吗&#xff1f;XUnity.AutoTranslator让你的游戏瞬间变中文&#xff01;这款强大的Unity游戏本地化工具&#xff0c;能够实时翻译游戏中的文本内容&#xff0c;让语言障碍不再成为游戏体验的阻碍。无论是日系RPG还是欧美大作&#xff0c;只需简单配置…

作者头像 李华
网站建设 2026/6/10 1:56:58

Wan2.2-T2V-A14B模型蒸馏版是否存在?轻量化部署可能

Wan2.2-T2V-A14B模型蒸馏版是否存在&#xff1f;轻量化部署可能 在生成式AI席卷内容创作领域的今天&#xff0c;文本到视频&#xff08;Text-to-Video, T2V&#xff09;技术正从实验室走向实际应用。尤其是像Wan2.2-T2V-A14B这样具备140亿参数的旗舰级模型&#xff0c;凭借其高…

作者头像 李华
网站建设 2026/6/10 5:03:56

【架构师必读】:智能Agent容器编排的4个关键指标与优化法则

第一章&#xff1a;智能 Agent 容器编排的演进与挑战随着分布式系统和边缘计算的快速发展&#xff0c;智能 Agent 在现代应用架构中扮演着越来越关键的角色。这些 Agent 不仅需要独立决策&#xff0c;还需在动态环境中协同工作&#xff0c;这就对底层容器编排系统提出了更高要求…

作者头像 李华
网站建设 2026/6/10 12:06:55

Comsol 下光子晶体仿真:从拓扑荷到偏振态的奇妙之旅

comsol光子晶体仿真&#xff0c;拓扑荷&#xff0c;偏振态。 三维能带&#xff0c;三维Q&#xff0c;Q因子计算。 远场偏振计算。在光子晶体领域的研究中&#xff0c;Comsol 是一款强大的仿真工具&#xff0c;它能帮助我们深入探究光子晶体的各种特性。今天咱们就来聊聊基于 Co…

作者头像 李华
网站建设 2026/6/9 16:01:51

Linux侵入式链表详解

侵入式链表详解 目录 什么是侵入式链表与传统链表的对比侵入式链表的优势Linux内核中的实现核心数据结构核心操作函数container_of宏详解使用示例应用场景总结 什么是侵入式链表 **侵入式链表&#xff08;Intrusive Linked List&#xff09;**是一种特殊的链表实现方式&…

作者头像 李华
网站建设 2026/6/10 12:08:13

基于粒子群优化算法优化高斯过程回归(PSO-GPR)的数据回归预测

基于粒子群优化算法优化高斯过程回归(PSO-GPR)的数据回归预测 PSO-GPR数据回归 matlab代码 注&#xff1a;暂无Matlab版本要求 -- 推荐 2018B 版本及以上在数据科学领域&#xff0c;回归预测是一项基础而重要的任务&#xff0c;而高斯过程回归&#xff08;Gaussian Process Reg…

作者头像 李华