如何将 gecko 可执行文件与 Selenium 一起使用

新手上路,请多包涵

我正在使用带有 Selenium 2.53 的 Firefox 47.0。最近,它们成为 Selenium 和 Firefox 之间的一个错误,导致代码无法正常工作。解决方案之一是使用Marionnette 驱动程序。

我按照该 站点 的说明将这个新驱动程序与 RemotWebDriver 一起使用,但我一直遇到错误:

警告 - 异常:线程“main”中的异常 org.openqa.selenium.WebDriverException:驱动程序可执行文件的路径必须由 webdriver.gecko.driver 系统属性设置;有关更多信息,请参阅 https://github.com/jgraham/wires 。最新版本可以从….下载。

到目前为止我尝试过的代码非常简单:

 public class Test {
    static WebDriver driver;
    static Wait<WebDriver> wait;
    public static void main(String[] args) throws MalformedURLException {
        System.setProperty("webdriver.gecko.driver", "C:\\Selenium\\geckodriver.exe");
        DesiredCapabilities cap = DesiredCapabilities.firefox();
        cap.setCapability("marionette", true);
        cap.setBrowserName("firefox");
        driver = new RemoteWebDriver(new URL("http://192.168.117.135:5555/wd/hub"), cap);//true to enable the JS
        wait = new WebDriverWait(driver, 3000);
        final String url = "https://www.google.com/";

        JavascriptExecutor js = (JavascriptExecutor) driver;

        try {
            driver.navigate().to(url);
        } finally {
            driver.close();
        }
    }
}

我确定 geckodriver.exe 的路径是正确的,我不知道我在哪里做错了。

编辑1:我尝试了以下代码:

 public class Test {
    static WebDriver driver;
    static Wait<WebDriver> wait;
    public static void main(String[] args) throws MalformedURLException {
        System.setProperty("webdriver.gecko.driver", "C:\\Selenium\\geckodriver.exe");

        driver = new MarionetteDriver();
        wait = new WebDriverWait(driver, 3000);
        final String url = "https://www.google.com/";

        JavascriptExecutor js = (JavascriptExecutor) driver;

        try {
            driver.navigate().to(url);
        } finally {
            driver.close();
        }
    }
}

它的工作似乎问题来自 RemoteWebDriver 和壁虎驱动程序,你们有任何消息吗?

原文由 Robert Reynolds 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 632
2 个回答

最近 Selenium 推出了 Selenium 3,如果您尝试使用 Firefox 最新版本,那么您必须使用 GeckoDriver:

 System.setProperty("webdriver.gecko.driver","G:\\Selenium\\Firefox driver\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();

您可以从此处查看完整文档

原文由 Mukesh otwani 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 WebDriverManager 自动处理 Firefox 驱动程序。

该库为您的平台(Mac、Windows、Linux)下载正确的二进制文件 ( geckodriver ),然后导出所需 Java 环境变量 ( webdriver.gecko.driver ) 的正确值。

看一个完整的例子作为 JUnit 测试用例:

 public class FirefoxTest {

  private WebDriver driver;

  @BeforeClass
  public static void setupClass() {
    WebDriverManager.firefoxdriver().setup();
  }

  @Before
  public void setupTest() {
    driver = new FirefoxDriver();
  }

  @After
  public void teardown() {
    if (driver != null) {
      driver.quit();
    }
  }

  @Test
  public void test() {
    // Your test code here
  }
}

如果您使用的是 Maven,则必须将 pom.xml 放在:

 <dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>5.1.0</version>
</dependency>

WebDriverManager 为您施展魔法:

  1. 它检查最新版本的 WebDriver 二进制文件
  2. 如果您的系统上不存在,它会下载 WebDriver 二进制文件
  3. 它导出了 Selenium 所需的 WebDriver Java 环境变量

So far, WebDriverManager supports Chrome , Opera , Internet Explorer , Microsoft Edge , PhantomJS , and Firefox

原文由 Boni García 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题