从 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 v8u73 和 Selenium 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()
来关闭和销毁 WebDriver 和 Web Client 优雅地实例化。
关于java - 驱动服务器意外死机了!含 Selenium ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52056128/