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

使用Selenium Grid跨VM执行脚本遇SessionNotCreatedException错误求助

我来帮你排查这个Selenium自动化脚本的问题,你遇到的SessionNotCreatedException本质是Selenium Grid节点没法成功启动ChromeDriver服务,结合你的代码和环境信息,我梳理了几个核心原因和对应的解决办法:

错误原因分析与解决方法

可能的原因1:节点机器未正确配置ChromeDriver

你用的是RemoteWebDriver,意味着浏览器是在目标VM(10.132.48.16)上启动的,这台机器必须安装对应版本的ChromeDriver,而且要和Chrome浏览器版本严格匹配(版本不匹配是这类问题最常见的诱因)。

  • 解决步骤:
    1. 在目标VM上打开Chrome,通过「设置→关于Chrome」查看浏览器版本号。
    2. 下载与该版本完全匹配的ChromeDriver(注意选择适配Windows 10 64位的版本)。
    3. 把ChromeDriver放到系统PATH目录下,或者在启动Selenium Grid节点时通过参数指定路径:
      java -Dwebdriver.chrome.driver="C:\your-chromedriver-path\chromedriver.exe" -jar selenium-server-standalone-3.8.1.jar -role node -hub http://[你的Hub地址]:4444/grid/register
      

可能的原因2:Selenium版本不兼容

你的客户端代码用的是Selenium 3.8.1,如果目标VM上的Selenium Grid节点使用的是不同版本的selenium-server-standalone包,就会出现服务创建失败的兼容性问题。

  • 解决步骤:
    • 确保Hub和节点都使用3.8.1版本的selenium-server-standalone.jar,不要混用不同版本的Selenium组件。

可能的原因3:目标VM的Chrome浏览器或权限问题

如果目标VM上的Chrome浏览器损坏,或者启动Selenium节点的用户没有桌面交互权限(Windows系统下Chrome需要桌面环境才能运行,服务账户默认没有这个权限),也会导致ChromeDriver服务启动失败。

  • 解决步骤:
    1. 在目标VM上手动打开Chrome,确认能正常运行。
    2. 如果是通过Windows服务启动Selenium节点,进入服务属性,勾选「允许服务与桌面交互」选项;或者用有桌面权限的普通用户启动节点进程。

代码优化建议(非核心问题,但更规范)

你的代码用了DesiredCapabilities,在Selenium 3.x中更推荐使用ChromeOptions来配置浏览器参数,同时别忘了退出驱动避免资源泄漏:

public static void main(String[] args) throws MalformedURLException {
    ChromeOptions options = new ChromeOptions();
    options.setPlatform(Platform.WIN10);
    WebDriver driver = new RemoteWebDriver(new URL("http://10.132.48.16:5566/wd/hub"), options);
    
    try {
        driver.get("http://google.com");
        System.out.println(driver.getTitle());
    } finally {
        driver.quit(); // 确保驱动退出,释放资源
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:19:37