有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Selenium 3 Java中启动Firefox线程本地驱动程序

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

我已经下载了geckodriver的第10版。exe并将其添加到我的路径环境变量中。我还在geckodriver的代码中设置system属性,就像我使用Chrome驱动程序时一样,它工作得非常好,但是,我仍然会得到以下TestNG消息:

org.openqa.selenium.WebDriverException: The path to the driver executable must be set by the webdriver.gecko.driver system property; for more information, see https://github.com/mozilla/geckodriver. The latest version can be downloaded from https://github.com/mozilla/geckodriver/releases Command duration or timeout: 411 milliseconds Build info: version: '2.52.0', revision: '4c2593cfc3689a7fcd7be52549167e5ccc93ad28', time: '2016-02-11 11:22:43' System info: host: 'VMP-2316', ip: '10.80.50.100', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_92' Driver info: 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) 个答案

  1. # 1 楼答案

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

    java -Dwebdriver.gecko.driver=path/to/geckodriver.exe -jar selenium-server-standalone-3.0.0-beta3.jar
    
  2. # 2 楼答案

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

    1. Machine_A——这是测试用例将被分离出来执行的地方
    2. 机器B——这是电网集线器运行的地方
    3. Machine_C——这是网格节点运行的地方,也是浏览器打开的地方

    在您的情况下,您需要确保机器C

    1. 路径变量(or)中可用的geckodriver二进制文件
    2. geckodriver二进制路径通过JVM参数-Dwebdriver.gecko.driver通知selenium节点(如Florent所述)

    语句System.setProperty("webdriver.gecko.driver", "path/to/geckodriver.exe");将对机器A产生影响,而不是对机器C(它真正应该作用的地方)产生影响

    希望有帮助