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

Docker Compose环境下运行selenium==4.0.0b2.post1版本Remote Driver问题咨询

解决Selenium 4 Remote Driver无法连接Docker Grid的问题

首先看你的情况,核心问题大概率出在Selenium客户端版本和Grid镜像版本不匹配上——你用的是selenium==4.0.0b2.post1,但Docker里的Grid和节点镜像是4.0.0-beta-3-prerelease-20210319,Selenium 4的早期beta版本之间兼容性差异很大,尤其是会话创建的通信协议细节,很容易出现“Grid显示会话创建,但客户端拿不到驱动”的情况。

下面给你几个具体的解决步骤:

1. 对齐客户端与Grid的版本

这是最关键的一步,必须让两者版本完全匹配:

  • 如果你想保留客户端的4.0.0b2.post1,修改docker-compose.yml里的镜像版本:
    services:
      chrome:
        image: selenium/node-chrome:4.0.0b2-post1
        # 其他配置不变
      selenium-hub:
        image: selenium/hub:4.0.0b2-post1
        # 其他配置不变
    
  • 或者升级Python客户端到对应Grid的版本,执行:
    pip install selenium==4.0.0b3
    

2. 切换到Selenium 4推荐的Remote连接写法

Selenium 4对Remote驱动的初始化方式做了优化,推荐用options参数替代旧的desired_capabilities,虽然旧写法在文档里说兼容,但beta版本里可能存在兼容性bug,换成新写法试试:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 初始化Chrome选项
chrome_options = Options()
# 如果需要添加额外配置,比如无头模式,可以在这里加:
# chrome_options.add_argument("--headless=new")

driver = webdriver.Remote(
    command_executor='http://localhost:4444/wd/hub',
    options=chrome_options
)
driver.get('http://www.google.com/')

3. 验证Grid节点状态

从你的日志来看,Grid的Distributor已经创建了会话,但客户端没拿到响应,除了版本问题,也可以确认下Grid的状态:

  • 访问Selenium 4新增的Grid控制台:http://localhost:4444/ui,查看Chrome节点是否成功注册,有没有可用的会话槽位
  • 用docker-compose ps命令检查selenium-hub和chrome容器是否都处于Up状态,没有异常退出

另外,你已经设置了JAVA_OPTS=-Dwebdriver.chrome.whitelistedIps=,这个配置是对的,能避免Chrome驱动的IP白名单限制,不用修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 11:57:38