Selenium Grid环境报错Error forwarding the new session cannot find 求助
我之前搭建Selenium Grid时也碰到过几乎一模一样的报错,结合你给出的信息,主要问题出在节点(Node)注册时的浏览器配置和请求的Capabilities不匹配,咱们一步步来解决:
核心原因
当你用Grid模式时,Hub会根据客户端请求的Capabilities(就是报错里的browserName: chrome, version: 88.0.4324.182还有chromeOptions参数)去匹配已注册的Node。但你的Node启动命令只简单声明了browserName=chrome,没有指定Chrome版本、支持的chromeOptions等关键信息,导致Hub找不到符合要求的节点,就抛出了"cannot find"的错误。而独立版Selenium是直接调用本地浏览器,会自动适配这些参数,所以能正常运行。
具体解决步骤
1. 修改Node启动命令,匹配请求的Capabilities
你可以直接在启动命令里补充浏览器版本、平台等信息,让Hub能识别到这个Node支持你的请求:
sudo -u selenium nohup java -jar /usr/local/bin/selenium-server-standalone-3.8.1.jar -role node -hub http://hub_ip:4444/grid/register -browser "browserName=chrome,version=88.0.4324.182,platform=LINUX,maxInstances=5" &
这里的version要和你请求里的版本完全一致,platform根据你的服务器系统调整(比如LINUX/WINDOWS)。
2. 更推荐:用配置文件定义Node的Capabilities
如果你的ChromeOptions参数比较多,用命令行传参容易出错,建议创建一个JSON配置文件(比如node_config.json):
{ "capabilities": [ { "browserName": "chrome", "version": "88.0.4324.182", "platform": "LINUX", "maxInstances": 5, "chromeOptions": { "args": ["--headless", "--no-sandbox"], "prefs": {"plugins.always_open_pdf_externally": true}, "w3c": false } } ], "hub": "http://hub_ip:4444/grid/register", "role": "node" }
然后用配置文件启动Node:
sudo -u selenium nohup java -jar /usr/local/bin/selenium-server-standalone-3.8.1.jar -role node -nodeConfig /path/to/node_config.json &
3. 验证Node注册状态
启动Node后,访问Hub的控制台页面http://hub_ip:4444/grid/console,确认这个Node已经成功注册,并且显示的浏览器信息和你请求的Capabilities完全匹配。
4. 额外检查:版本兼容性
你用的Selenium Server 3.8.1版本比较旧,虽然独立版能运行,但Grid模式下可能和Chrome 88存在一些兼容性问题。如果上面的方法还是不行,可以:
- 升级Selenium Server到3系列的稳定版(比如3.141.59,这个版本对Chrome 88的支持更好)
- 确保ChromeDriver的版本和Chrome版本完全匹配(Chrome 88对应ChromeDriver 88.0.4324.96左右)
内容的提问来源于stack exchange,提问作者Fabiano Amaro Corrêa

