Selenium WebDriver,Firefox,Centos找不到匹配的功能集

时间:2019-08-20 16:03:50

标签: java firefox selenium-webdriver geckodriver selenium-firefoxdriver

我有一个使用Selenium WebDriver来控制FireFox的应用程序。它作为Tomcat下的Web应用程序运行-是的,这有点奇怪,但是这样做有充分的理由。

我已经在MacBook上对其进行了测试,并且运行良好。我的代码叫WebDriver,WebDriver叫gecko,Firefox运行,一切都很好。

我现在移至Centos-7盒,并遇到问题

  

org.openqa.selenium.SessionNotCreatedException:无法找到   匹配的功能集构建信息:版本:“ 3.141.59”,   版本:'e82be7d358',时间:'2018-11-14T08:17:03'系统信息:   主机:'xxx',ip:'a.b.c.d',操作系统名称:'Linux',os.arch:'amd64',   os.version:'3.10.0-693.el7.x86_64',java.version:'1.8.0_222'驱动程序   信息:driver.version:FirefoxDriver

我正在使用

  • 硒:3.141.59
  • Gecko:geckodriver 0.24.0(2019-01-28)
  • Firefox:Mozilla Firefox 60.8.0

我已经安装并运行Xvfb。

我的代码只需调用

m_driver = new FirefoxDriver();

我相信这是当前的成语。

我已添加

JAVA_OPTS="-Dwebdriver.gecko.driver=/opt/gecko/geckodriver"

到我的tomcat.conf

我从较旧的Firefox和Gecko版本中看到了此类问题的引用,并表明这可能是版本问题,但据我所知,我掌握的是最新版本。

请提出修复建议或获取一些诊断信息。

1 个答案:

答案 0 :(得分:1)

我认为您已经很接近了。尽管tomcat.conf中的以下行看起来很完美:

JAVA_OPTS="-Dwebdriver.gecko.driver=/opt/gecko/geckodriver"

但是我仍然不确定-Dwebdriver.firefox.driver=/usr/bin/firefox是否是您的必需条件。

根据Class FirefoxDriver.SystemPropertywebdriver.firefox.driver的值是指常量字段 DRIVER_XPI_PROPERTY,它是定义{{1} }浏览器扩展程序以安装在浏览器中。如果未设置,则将使用与此类捆绑在一起的预建扩展。除非绝对必要,否则必须保留此常量字段

因此,放下webdriver.xpi就可以解决问题。


更新

有关您的用例的更多详细信息将有助于我们以更好的方式调试问题。但是,正如您提到的那样, -Dwebdriver.firefox.driver=/usr/bin/firefox 已安装并正在运行,您需要注意以下两个事实:

  • 确保如果在没有显示 的系统上运行 Firefox ,则必须使用 headless模式
  • 无头模式 GeckoDriver v0.24.0 中的正确用法是:

    Xvfb
  • 如果您按照以下方式设置options.headless = True ,则不再需要xvfb-run

    MOZ_HEADLESS=1
  

您可以在How to make firefox headless programmatically in Selenium with python?

中找到详细的讨论
  • 如果您更改了系统路径,请执行系统重启
  • 始终在$ export MOZ_HEADLESS=1 # this way you only have to set it once 方法内调用driver.quit(),以优雅地关闭和销毁 WebDriver Web Client 实例。
  • 始终以非root用户用户的身份执行 @Tests