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

Playwright对接Selenium Grid(Docker YAML)出现连接超时错误求助

问题描述

我用Docker官方提供的docker-compose配置启动了Selenium Grid(配置见下文),搭配Playwright自带的示例测试用例,本地运行测试正常,但对接Selenium Grid时出现以下错误:

Error: browserType.launch: WebSocket error: connect ETIMEDOUT 10.0.1.3:4444
=========================== logs ===========================
<selenium> connecting to http://localhost:4444/
<selenium> connected to sessionId=6d694b7555264036b595224d8f91e394
<selenium> using selenium v4
<selenium> retrieved endpoint ws://10.0.1.3:4444/session/6d694b7555264036b595224d8f91e394/se/cdp for sessionId=6d694b7555264036b595224d8f91e394
<ws connecting> ws://10.0.1.3:4444/session/6d694b7555264036b595224d8f91e394/se/cdp
<ws error> ws://10.0.1.3:4444/session/6d694b7555264036b595224d8f91e394/se/cdp error connect ETIMEDOUT 10.0.1.3:4444
<ws connect error> ws://10.0.1.3:4444/session/6d694b7555264036b595224d8f91e394/se/cdp connect ETIMEDOUT 10.0.1.3:4444
<ws disconnected> ws://10.0.1.3:4444/session/6d694b7555264036b595224d8f91e394/se/cdp code=1006 reason=
<selenium> disconnecting from sessionId=6d694b7555264036b595224d8f91e394
<selenium> disconnected from sessionId=6d694b7555264036b595224d8f91e394
============================================================

之前用webdriverIO实现过相同功能,但因硬件故障丢失了配置记录。我已经在Windows和macOS环境测试过,两台设备都装有防火墙,想问是否需要开放端口?(我不是网络专家)

另外还有其他解决建议吗?我已经按照配置注释启动了Grid,并且能通过localhost:4444/ui确认Grid正常运行。

我的docker-compose配置:

# To start Docker in Swarm mode, you need to run `docker swarm init`
# To deploy the Grid, `docker stack deploy -c docker-compose-v3-swarm.yml grid`
# Stop with `docker stack rm grid`
# Stop swarm mode `docker swarm leave --force`

version: "3.7"

services:
  chrome:
    image: selenium/node-chrome:4.15.0-20231110
    shm_size: 2gb
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
    deploy:
      replicas: 1
    entrypoint: bash -c 'SE_OPTS="--host $$HOSTNAME" /opt/bin/entry_point.sh'

  edge:
    image: selenium/node-edge:4.15.0-20231110
    shm_size: 2gb
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
    deploy:
      replicas: 1
    entrypoint: bash -c 'SE_OPTS="--host $$HOSTNAME" /opt/bin/entry_point.sh'

  firefox:
    image: selenium/node-firefox:4.15.0-20231110
    shm_size: 2gb
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
    deploy:
      replicas: 1
    entrypoint: bash -c 'SE_OPTS="--host $$HOSTNAME" /opt/bin/entry_point.sh'

  selenium-hub:
    image: selenium/hub:4.15.0-20231110
    ports:
      - "4442:4442"
      - "4443:4443"
      - "4444:4444"
解决建议

1. 核心问题:Selenium Grid返回容器内部IP导致WebSocket连接失败

从错误日志看,Playwright成功连接到http://localhost:4444获取了session,但Selenium Hub返回的WebSocket端点是ws://10.0.1.3:4444/...,这个IP是Docker容器的内部IP,主机无法直接访问,所以出现超时。

解决方法:给Selenium Hub添加环境变量,让它对外暴露主机可访问的地址:
修改selenium-hub的配置,添加SE_HUB_HOST和SE_NODE_GRID_URL环境变量,示例:

selenium-hub:
  image: selenium/hub:4.15.0-20231110
  ports:
    - "4442:4442"
    - "4443:4443"
    - "4444:4444"
  environment:
    - SE_HUB_HOST=localhost  # 也可替换为你的主机局域网IP
    - SE_NODE_GRID_URL=http://localhost:4444

重启Grid后,Hub会返回正确的WebSocket端点地址,Playwright就能正常建立连接了。

2. 防火墙端口开放问题

目前你能访问localhost:4444/ui,说明4444端口已经开放。本地测试场景下,Windows/macOS防火墙默认允许本地回环(localhost)的连接,暂时不需要额外开放端口。如果测试时仍有问题,可以临时关闭防火墙验证是否是防火墙导致的。

如果后续需要跨设备访问Grid,则需要开放以下端口:

  • 4444:Grid的主接口(HTTP/WebSocket)
  • 4442/4443:Event Bus的发布/订阅端口(仅节点和Hub通信用,本地测试无需对外开放)

3. 其他排查建议

  • 检查Playwright的Selenium连接配置,确保使用http://localhost:4444/wd/hub作为远程地址(Playwright对接Selenium Grid需要指定该路径)
  • 若使用Docker Swarm模式,确认Swarm网络配置未限制容器与主机的通信
  • 尝试更换为最新稳定版的Selenium镜像,避免版本兼容问题
  • 查看Selenium Hub和节点的日志,执行docker logs <hub-container-id>和docker logs <node-container-id>,排查是否存在节点注册失败或其他异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 15:45:12