驱动程序信息:driver.version:Selenium 和 Geckodriver 出现未知 (Behat\Mink\Exception\DriverException) 错误

Driver info: driver.version: unknown (Behat\Mink\Exception\DriverException) error with Selenium and Geckodriver

情况如下:我正在使用 Behat 在 Symfony 上进行 运行 验收测试。为此,我使用 Geckodriver 启动了一个 Selenium 实例,然后 运行 Behat。在本地一切正常(太棒了!)。

但是当它 运行 执行 Github 操作时,它失败了。我检查了版本,我什至对 geckodriver 和 selenium.jar 文件进行了版本控制以使用完全相同的版本(尽管它们已经存在于 github 操作中),但没有任何效果。

所以我正在寻找任何帮助来调试此错误。以下是命令及其结果:

$ java -jar -Dwebdriver.gecko.driver=/usr/local/share/gecko_driver /usr/share/java/selenium-server-standalone.jar &

14:19:46.106 INFO [GridLauncherV3.parse] - Selenium server version: 3.141.59, revision: e82be7d358
14:19:46.369 INFO [GridLauncherV3.lambda$buildLaunchers] - Launching a standalone Selenium Server on port 4444
2020-05-29 14:19:46.780:INFO::main: Logging initialized @1350ms to org.seleniumhq.jetty9.util.log.StdErrLog
14:19:47.657 INFO [WebDriverServlet.<init>] - Initialising WebDriverServlet
14:19:47.758 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 4444
./vendor/bin/behat -s acceptance

Could not open connection: Unable to create new service: GeckoDriverService
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'fv-az33', ip: '10.1.0.4', os.name: 'Linux', os.arch: 'amd64', os.version: '5.3.0-1022-azure', java.version: '1.8.0_252'
Driver info: driver.version: unknown (Behat\Mink\Exception\DriverException)

这个错误信息...

Driver info: driver.version: unknown (Behat\Mink\Exception\DriverException)

...暗示 GeckoDriver 未被 浏览上下文 识别,即 Firefox 浏览器.


解决方案

确保:

  • JDK 升级到当前级别 JDK 8u251.
  • Selenium 已升级到当前级别 Version 3.141.59
  • GeckoDriver 升级到 GeckoDriver v0.26.0 级别。
  • Firefox 已升级到当前的 Firefox v76.0 级别。
  • GeckoDriver 出现在所需位置。
  • GeckoDriver 具有非 root 用户的可执行权限。
  • 如果您的基础 Web Client 版本太旧,则卸载它并安装最新的 GA 和发布版本的 Web Client
  • 系统重启
  • 以非 root 用户身份执行 Test
  • 始终在 tearDown(){} 方法中调用 driver.quit() 以优雅地关闭和销毁 WebDriverWeb Client 实例.

参考

您可以在以下位置找到一些相关讨论:

  • Driver info: driver.version: unknown with ChromeDriver Chrome using Selenium and Python

好的,我刚刚解决了我的问题。我认为这是由于两件事:

  • 首先,我没有使用无头模式。我不知道使用 Geckodriver 来设置它,因为我终于使用了 Chromedriver
  • 其次,github 操作的文档具有误导性。它说 'Chrome Driver is available via CHROMEWEBDRIVER environment variable',但实际上它只是环境变量中的目录。所以驱动程序的路径是$CHROMEWEBDRIVER/chromedriver(与$GECKOWEBDRIVER相同)

有关信息,这是我的行为配置:

javascript_session:
  selenium2:
  browser: chrome
  capabilities:
    chrome:
      switches:
        - "--headless"
        - "--disable-gpu"

然后 运行 硒:

java -Dwebdriver.chrome.driver=$CHROMEWEBDRIVER/chromedriver -jar $SELENIUM_JAR_PATH &