java - 驱动服务器意外死机了!含 Selenium

标签 java selenium firefox selenium-webdriver geckodriver

从 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 框架和 Firefox 版本之间的不兼容造成的。我正在使用以下 Selenium 框架:

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

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

我的想法已经用完了......有人有任何指示/想法吗?

最佳答案

此错误消息...

The driver server has unexpectedly died!

...暗示 GeckoDriver 无法启动/生成新的 WebBrowser,即 Firefox 浏览器 session 。

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

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

因此,JDK v8u73Selenium Client v3.13.0 之间存在明显的不匹配。

解决方案

  • 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执行测试套件之前和之后。
  • 如果您的基本网络客户端版本太旧,请通过 Revo Uninstaller 卸载它并安装最新的 GA 和已发布版本的Web 客户端
  • 重新启动系统
  • 以非 root 用户身份执行测试
  • 始终在 tearDown(){} 方法中调用 driver.quit() 来关闭和销毁 WebDriverWeb Client 优雅地实例化。

关于java - 驱动服务器意外死机了!含 Selenium ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52056128/

相关文章:

JavaFX - 为整个应用程序设置默认 CSS 样式表

java - Java 中的 try-catch 语法糖

selenium - Selenium IDE 中的 XPATH : Matching text in a <td> tag that contains <br> tags

php - 如果selenium已经在运行,如何从shell中逃脱?

javascript - 在 Google Chrome 中创建面板

javascript - Firefox中的Javascript播放声音

java - 从 Selenium 调用 Tor 的 WebDriver

java - ByteBuffer allocateDirect 花费了很长时间

java - Java 中的名词类型确定

javascript - 如何检测 HTML 代码中的文本