在Selenium 3中启动Firefox ThreadLocal驱动程序 - Java

时间:2016-09-19 13:24:42

标签: java selenium firefox selenium-grid

我刚刚更新到Selenium 3.0.0-beta3,并尝试在Firefox 45中执行测试。

我已经下载了geckodriver.exe的v.10并将其添加到我的PATH环境变量中。我也在geckodriver的代码中设置系统属性,就像我使用Chrome驱动程序时一样,但是,我仍然可以使用以下TestNG消息:

  

org.openqa.selenium.WebDriverException:驱动程序的路径   必须由webdriver.gecko.driver系统属性设置可执行文件;   有关更多信息,请参阅https://github.com/mozilla/geckodriver。该   最新版本可以从中下载   https://github.com/mozilla/geckodriver/releases命令持续时间或   超时:411毫秒构建信息:版本:'2.52.0',修订版:   '4c2593cfc3689a7fcd7be52549167e5ccc93ad28',时间:'2016-02-11   11:22:43'系统信息:主机:'VMP-2316',ip:'10 .80.50.100',os.name:   'Windows 10',os.arch:'amd64',os.version:'10 .0',java.version:   '1.8.0_92'驱动程序信息:org.openqa.selenium.remote.RemoteWebDriver

以下是我用来设置驱动程序的代码:

// Set Driver
threadDriver = new ThreadLocal<RemoteWebDriver>();
DesiredCapabilities dc = new DesiredCapabilities();

System.setProperty("webdriver.gecko.driver", "path/to/geckodriver.exe");

dc.setBrowserName(DesiredCapabilities.firefox().getBrowserName());
dc.setCapability("marionette", true);

threadDriver.set(new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), dc));

2 个答案:

答案 0 :(得分:3)

另一种方法是在启动服务器/节点的命令行中定义驱动程序的路径:

java -Dwebdriver.gecko.driver=path/to/geckodriver.exe -jar selenium-server-standalone-3.0.0-beta3.jar

答案 1 :(得分:0)

我猜你正在对网格运行测试。 当对网格运行测试时,涉及三台机器。

  1. Machine_A - 这是测试用例将被分离执行的地方
  2. Machine_B - 这是Grid Hub将运行的地方。
  3. Machine_C - 这是Grid节点将运行的位置以及浏览器将要打开的机器。
  4. 在您的情况下,您需要确保Machine_C具有

    1. PATH变量(或)中可用的geckodriver二进制文件
    2. geckodriver二进制路径通过JVM参数-Dwebdriver.gecko.driver通知selenium节点(正如Florent提到的那样)
    3. 语句System.setProperty("webdriver.gecko.driver", "path/to/geckodriver.exe");将对Machine_A产生影响,而不会影响Machine_C(它应该在其上采取行动)。

      希望有所帮助!