You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Playwright Python连接已打开浏览器问题求助(Robot Framework场景)

解决Playwright连接复用已打开浏览器的问题

一、正确启动可复用的浏览器服务

使用launch-server命令时,需明确指定有头模式并固定端口(避免随机端口导致后续连接混乱):

npx playwright launch-server --browser chromium --headed --port 9222

执行后会输出类似ws://127.0.0.1:9222/xxxxxx的WebSocket地址,后续所有客户端连接都使用该地址。

二、复用已有浏览器实例及上下文

多次连接时,核心是复用已存在的上下文,而非每次新建:

  1. 第一次连接并创建上下文:
${browser}=    Connect To Browser    ws://127.0.0.1:9222/xxxxxx
# 可选:创建带持久化目录的上下文,用于保存登录状态等
${context}=    New Context    browser=${browser}    persistent_context_dir=./persistent_ctx
${page}=    New Page    context=${context}
  1. 第二次连接时,获取已存在的上下文:
${browser}=    Connect To Browser    ws://127.0.0.1:9222/xxxxxx
# 获取当前浏览器的所有上下文列表
${contexts}=    Get Contexts    browser=${browser}
# 选取第一个已存在的上下文(可根据实际场景调整)
${existing_context}=    Set Variable    ${contexts}[0]
${page}=    New Page    context=${existing_context}

你两次连接目录不匹配的原因,就是每次连接都新建了上下文,而非复用已有实例。

三、修复playwright_process_port连接失败错误

出现RuntimeError: Could not connect to the playwright process,按以下步骤排查:

  • 确保launch-server服务已正常启动,且代码中配置的playwright_process_port与服务端口一致
  • 避免使用1024以下的端口(需管理员权限),建议使用9222这类常用调试端口
  • 检查端口是否被其他进程占用,Windows可执行netstat -ano | findstr :9222,Linux/macOS可执行lsof -i :9222验证

四、持久化上下文的正确用法

若需保留浏览器状态(如登录态),必须在创建上下文时指定persistent_context_dir,后续连接时直接复用该目录:

# 首次创建持久化上下文
${context}=    New Context    browser=${browser}    persistent_context_dir=./my_session
# 后续连接时直接加载该目录
${context}=    New Context    browser=${browser}    persistent_context_dir=./my_session

不要每次创建空上下文,否则无法保留之前的状态。

内容的提问来源于stack exchange,提问作者JSalazAlt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 21:43:30