driver 服务器意外挂了!用硒

The driver server has unexpectedly died! with Selenium

当来自 Eclipse 运行 时,以下代码可以正常工作:

System.setProperty("webdriver.gecko.driver", pathToGeckoDriver);
FirefoxOptions options = new FirefoxOptions();
options.setHeadless(true);
WebDriver driver = new FirefoxDriver(options);
driver.manage().window().setSize(new Dimension(2500, 1500));
driver.get(myUrl);
driver.close();

但是当 运行 在 Docker 容器中时失败并出现以下错误:

The driver server has unexpectedly died!
Build info: version: '3.13.0', revision: '2f0d292', time: '2018-06-25T15:24:21.231Z'
System info: host: 'XXXX', ip: 'XXX.X.X.X', os.name: 'Linux', os.arch:'amd64', os.version: '3.10.0-862.9.1.el7.x86_64', java.version: '1.8.0_73'
Driver info: driver.version: RemoteWebDriver

我听说这可能是由于 Selenium framewrok 和 Firefox 版本不兼容造成的。我正在使用以下 Selenium 框架:

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-firefox-driver</artifactId>
    <version>3.14.0</version>
</dependency>

并且Firefox已经在这两个环境中新安装了最新版本。

我运行没主意了...有人有什么pointer/ideas吗?

试试这个组合 硒-11.6+ geckodriver-0.21 日食霓虹灯 firefox-57.0+

这个错误信息...

The driver server has unexpectedly died!

...意味着 GeckoDriver 无法 initiate/spawn 新的 WebBrowserFirefox浏览器 会话。

您的主要问题是您使用的二进制文件版本之间不兼容,如下所示:

  • 根据错误日志,您的 Selenium Client 版本是 3.13.0 但根据 Maven 配置你的 Selenium Client 版本是 3.14.0
  • 你的 JDK 版本1.8.0_73 相当 古老.
  • 我们不知道您的 GeckoDriver 版本。
  • 我们不知道您的 Firefox 版本。

因此 JDK v8u73Selenium Client v3.13.0.[=19= 之间存在明显的不匹配]

解决方案

  • JDK 升级到最近的水平 JDK 8u181
  • Selenium 升级到当前级别 Version 3.14.0
  • GeckoDriver 升级到 GeckoDriver v0.20.1 级别。
  • Firefox 版本升级到 Firefox v61.0.2 级别。
  • 清理你的项目工作区通过你的IDE重建你的项目只需要依赖。
  • (仅限 LinuxOS) Free Up and Release the Unused/Cached Memory in Ubuntu/Linux Mint 在执行您的 测试套件 .
  • 之前和之后
  • 如果您的基础 Web 客户端 版本太旧,则通过 Revo Uninstaller 卸载它并安装最新的 GA 和发布版本的 Web 客户端.
  • 系统重启
  • 以非 root 用户身份执行 Test
  • 始终在 tearDown(){} 方法中调用 driver.quit() 以优雅地关闭和销毁 WebDriverWeb Client 实例.