Playwright 如何连接 Selenium Grid 4 在远程节点上启动 Chrome/Edge 测试?

发布时间:2026/9/9 21:45:30

Playwright 如何连接 Selenium Grid 4 在远程节点上启动 Chrome/Edge 测试? Playwright 如何连接 Selenium Grid 4 在远程节点上启动 Chrome/Edge 测试【免费下载链接】playwrightPlaywright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API.项目地址: https://gitcode.com/GitHub_Trending/pl/playwright如果你有现成的 Selenium Grid 集群希望 Playwright 的测试不在本机启动浏览器而是由远程 Grid 节点上的 Google Chrome 或 Microsoft Edge 执行可以设置SELENIUM_REMOTE_URL环境变量让 Playwright 直连 Grid Hub。这是 Playwright 文档中明确支持的集成方式但属于experimental功能且只适用于运行 Selenium 4 的 Grid只支持 Chrome/Edge内部通过 Chrome DevTools Protocol websocket 连接浏览器Selenium 4 才暴露这一能力Selenium 后续若移除该能力此集成会停止工作。前提条件与限制开始之前先确认以下几条来自 Selenium Grid 文档的边界Playwright 只连接运行Selenium 4的 Grid Hub目标浏览器仅限 Google Chrome 或 Microsoft Edge分布式 Grid 中每个 node 必须以可被 Playwright 所在机器访问的地址注册到 hub否则 Playwright 拿到 session 后无法连到节点上的浏览器。启动 node 时应设置SE_NODE_GRID_URL指向 hub# Start selenium node SE_NODE_GRID_URLhttp://selenium-hub-ip:4444 java -jar selenium-server-version.jar node其中selenium-hub-ip替换为你的 hub 地址version为 selenium-server jar 的版本号。在连接 Playwright 之前先用 Selenium WebDriver 验证 Grid 本身可用运行 Selenium WebDriver 的任一示例并传入SELENIUM_REMOTE_URL环境变量。如果 webdriver 示例跑不通先检查 hub/node/standalone 的输出日志而不是从 Playwright 侧排查。启动 Selenium Grid可选用官方 Docker 镜像如果你还没有 Grid文档给出的最短路径是运行 Selenium 官方 docker 容器镜像说明见文档中链接的 docker-selenium 文档。Standalone 模式hub 和 node 在同一个localhost上通过SE_NODE_GRID_URL指向自身docker run -d -p 4444:4444 --shm-size2g -e SE_NODE_GRID_URLhttp://localhost:4444 selenium/standalone-chromium:latestHub nodes 模式hub 与 node 在不同 IP 上启动 node 容器时通过SE_EVENT_BUS_HOST、SE_EVENT_BUS_PUBLISH_PORT、SE_EVENT_BUS_SUBSCRIBE_PORT和SE_NODE_GRID_URL指向 hubdocker run -d -p 4442-4444:4442-4444 --name selenium-hub selenium/hub:4.25.0 docker run -d -p 5555:5555 \ --shm-size2g \ -e SE_EVENT_BUS_HOSTselenium-hub-ip \ -e SE_EVENT_BUS_PUBLISH_PORT4442 \ -e SE_EVENT_BUS_SUBSCRIBE_PORT4443 \ -e SE_NODE_GRID_URLhttp://selenium-hub-ip:4444 \ selenium/node-chromium:4.25.0selenium-hub-ip替换为 hub 容器的实际 IP。连接 Playwright 到 Selenium Grid 4核心操作只有一个设置SELENIUM_REMOTE_URL指向你的 Grid Hub然后像平时一样跑测试。不需要修改测试代码照常用测试框架或method: BrowserType.launch即可。各语言入口如下SELENIUM_REMOTE_URLhttp://selenium-hub-ip:4444 npx playwright testSELENIUM_REMOTE_URLhttp://selenium-hub-ip:4444 pytest --browser chromiumSELENIUM_REMOTE_URLhttp://selenium-hub-ip:4444 mvn testSELENIUM_REMOTE_URLhttp://selenium-hub-ip:4444 dotnet test针对前面两种 Docker 部署对应的命令是SELENIUM_REMOTE_URLhttp://localhost:4444standalone或SELENIUM_REMOTE_URLhttp://selenium-hub-ip:4444hub nodes。要启动 Microsoft Edge在代码里用channel指定 Edge例如 Python 中browser p.chromium.launch(channelmsedge)JavaScript 中use: { channel: msedge }见 browsers.md。内部实现会据此把请求的browserName设为MicrosoftEdge否则为chrome逻辑见 chromium.ts。网格要求额外 capabilities 或 headers 时如果 Grid 来自外部云服务、需要在请求中携带额外参数或授权信息可以用两个环境变量传递 JSON 序列化的值SELENIUM_REMOTE_URLhttp://selenium-hub-ip:4444 SELENIUM_REMOTE_CAPABILITIES{mygrid:options:{os:windows,username:John,password:secure}} npx playwright testSELENIUM_REMOTE_CAPABILITIES中的键值会合并进 Playwright 发送的 capabilities需要额外 HTTP 头时例如授权 token则用SELENIUM_REMOTE_HEADERSSELENIUM_REMOTE_URLhttp://selenium-hub-ip:4444 SELENIUM_REMOTE_HEADERS{Authorization:Basic b64enc} npx playwright test以上均为文档示例os、username、password和 token 值按你的网格实际要求替换。Python、Java、C# 的用法同理只是执行命令分别为pytest --browser chromium、mvn test、dotnet test。验证连接与排查问题设置DEBUGpw:browser*运行可以看到 Playwright 连接 Selenium Grid 的详细过程DEBUGpw:browser* SELENIUM_REMOTE_URLhttp://internal.grid:4444 npx playwright test从 实现代码可以看到这条 debug 日志依次输出selenium connecting to hubUrl向 hub 的session接口发起 POST、selenium connected to sessionId...拿到 session、selenium using selenium v4以及selenium retrieved endpoint ... for sessionId...Selenium 4 走se:cdp提供的 CDP websocket 代理。能看到 endpoint 成功获取说明 Playwright 已接到节点浏览器上向 hub 提交的是capabilities.alwaysMatch其中包含--remote-debugging-port0启动参数。仓库中的集成测试 browsertype-launch-selenium.spec.ts 覆盖了对 Selenium 4.8.3 的 standalone 与 hub node 两种形态的连接验证。排查时按文档给出的顺序webdriver 示例都跑不通问题在 Grid 本身。查看 hub/node/standalone 输出并对照 Selenium 项目的 issue 库解决。webdriver 可用但 Playwright 连接失败用DEBUGpw:browser*定位卡在哪一步提交 issue 时附上该日志。仓库测试中还展示了驱动损坏时的报错形态示例Error connecting to Selenium at http://127.0.0.1:port/session: Could not start a new session此时 Grid 侧不会出现Starting ChromeDriver说明 session 根本没创建成功。误用了非 Chromium 浏览器设置SELENIUM_REMOTE_URL后连接只支持 Chromium 通道承载 Chrome/Edge用其他浏览器会报Connecting to SELENIUM_REMOTE_URL is only supported by Chromium。不支持 Selenium 3 的说明Selenium 3 不暴露 CDP websocketPlaywright 对它是best-effort支持尝试直连 Grid 节点前提是节点必须能被运行 Playwright 的机器直接访问。如果你的 Grid 无法升级到 Selenium 4远程节点的可达性是唯一能自行保证的条件。完整的参数与示例见 docs/src/selenium-grid.md。【免费下载链接】playwrightPlaywright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API.项目地址: https://gitcode.com/GitHub_Trending/pl/playwright创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/9 21:45:30

AI云原生推理利器InferNex:GPU共享调度与推理服务实战

2026年的KubeCon Europe现场,openFuyao的展台前面排队的人比我想象中多。按理说,AI推理这种偏底层的项目,很难像大模型Demo一样吸引路人,但InferNex套件在现场演示的GPU利用率和显存调度曲线确实让人眼前一亮:同一个集…

2026/9/9 21:40:30

如何为 uBOLite 将过滤列表转换为声明式 ruleset?

如何为 uBOLite 将过滤列表转换为声明式 ruleset? 【免费下载链接】uBlock uBlock Origin - An efficient blocker for Chromium and Firefox. Fast and lean. 项目地址: https://gitcode.com/GitHub_Trending/ub/uBlock uBlock Origin 仓库中包含一个 MV3 分…

2026/9/9 22:35:47

Vue3源码阅读指南:TypeScript高级玩法与响应式、diff机制解析

简介:对 Vue3 与 TypeScript 结合开发感兴趣的前端开发者,这份源码学习资源提供了从基础语法到工程实践的完整参考。资源共 2002 个文件,以 Markdown 笔记、JavaScript/TypeScript 源码和 JSON 配置为主,压缩包约 63MB&#xff1b…

2026/9/9 22:35:47

缓存穿透全方位防护:空值缓存、布隆过滤器与限流降级

缓存穿透是后端开发中最经典也最容易引发事故的问题之一。它的特征很直接:请求一直在查询一个不存在的数据,缓存永远无法命中,所有查询压力全部落到数据库上。平时流量不高看不出问题,一旦遇到恶意刷接口、爬虫扫描,或…

2026/9/9 22:35:47

OrCAD X Presto用户界面详解:布局、操作与常见问题排查

之前用传统 OrCAD Capture 画原理图的老工程师,第一次打开 OrCAD X Presto 时,最直接的感受往往是“找不到命令”。原来的菜单栏变成了类似 Office 的功能区,原理图页签的切换方式变了,元件库的入口也不同了。如果你正处于这个“界…

2026/9/9 22:35:47

用dxf-rs在Rust中解析DXF:坐标换算与批量修复实战

这一篇不是一般的“在库里翻了几个 API 再抄进文章”那种入门帖。我是在一个硬件数据中台项目里被几百个 PCB 和机械图纸的 DXF 文件逼着上手的 dxf-rs,从读取、坐标换算、批处理到最终把能力封装成 HTTP 服务,中间踩的坑比文档里的警告多得多。这篇文章…

2026/9/9 22:30:46

数字人源码实战指南:从架构选型到AI直播落地全流程

简介:数字人源码下载包是一份面向开发者与研究人员的数字人技术学习资料,聚焦数字人生成、动作捕捉、面部表情模拟、语音交互等关键实现,适用于虚拟角色开发、人机交互及二次功能扩展等场景。压缩包共129个文件,整体约687KB&#…

2026/9/9 13:11:35

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/8 7:15:15

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/9 0:00:48

MHS模型硬件标准:让大模型像调用软件一样控制物理设备

让Claude真正看着显微镜说“这个细胞形态不太对”,或者让大模型自己调一版机械臂的运动轨迹,这事儿听上去已经很接近科幻片了。但你真上手试一次就会发现,模型不缺智商,缺的是一个能插进显微镜、机械臂、激光控制器里的“通用插座…

2026/9/9 0:00:48

AI五大核心方向详解:从机器学习到大模型,零基础转行选哪条?

会有人告诉我,他想转行学AI,但打开招聘网站一看直接傻眼:机器学习、深度学习、自然语言处理、计算机视觉、大模型应用……满屏都是这些词,好像每个都会一点,又好像每个都离自己很远。还有人上来就问“学Python还是学Ja…

2026/9/9 0:00:49

从50行最小循环到生产级AI引擎:工程化改造全解析

直接说干货。这一章我写的不是那种"hello world跑通某个模型"的教程,而是把AI引擎当做一个真正要上线、要被人调用、要扛流量的系统来聊。从最初只有50行的最小循环,到能够承载生产流量的AI引擎,中间差的不是代码量,而是…

2026/9/7 16:23:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/7 22:46:00

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/9 10:21:54

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码