Selenium 2.53 不适用于 Firefox 47

新手上路,请多包涵

使用带有 WebDriver 的 Firefox 时出现错误。

 org.openqa.selenium.firefox.NotConnectedException: Unable to connect
to host 127.0.0.1 on port 7055 after 45000 ms.

  • 火狐版本:47.0
  • 硒:2.53.0
  • Windows 10 64 位

有没有人遇到类似的问题或知道解决方案是什么?它在 Chrome 上运行良好,但在 Firefox 上没有加载任何 URL。

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

阅读 584
1 个回答

不幸的是,Selenium WebDriver 2.53.0 与 Firefox 47.0 不兼容。处理 Firefox 浏览器的 WebDriver 组件 ( FirefoxDriver ) 将被停用。从 3.0 版开始,Selenium WebDriver 将需要 geckodriver 二进制文件来管理 Firefox 浏览器。更多信息 在这里这里

因此,为了将 Firefox 47.0 用作带有 Selenium WebDriver 2.53.0 的浏览器,您需要下载 Firefox 驱动程序(这是一个二进制文件,名为 geckodriver 从版本 0.8.0 开始,以前是 wires ) 并将其绝对路径导出到变量 webdriver.gecko.driver 作为 Java 代码中的系统属性:

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

幸运的是,库 WebDriverManager 可以为您完成这项工作,即为您的机器(Linux、Mac 或 Windows)下载正确的 Marionette 二进制文件并导出正确的系统属性的值。要使用此库,您需要将此依赖项包含到您的项目中:

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

…然后在使用 WebDriver 之前在您的程序中执行这一行:

 WebDriverManager.firefoxdriver().setup();

使用 WebDriver 的 JUnit 4 测试用例的完整运行示例如下:

 public class FirefoxTest {

    protected 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
    }
}

考虑到 Marionette 将是未来的唯一选择(对于 WebDriver 3+ 和 Firefox 48+),但目前(编写时为 0.9.0 版)不是很稳定。查看 Marionette 路线图 了解更多详细信息。

更新

Selenium WebDriver 2.53.1 已于 2016 年 6 月 30 日发布 FirefoxDriver 再次使用 Firefox 47.0.1 作为浏览器。

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

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