一尘不染

JavaSelenium 2.53在Firefox 47上不起作用

java

FirefoxWebDriver一起使用时出现错误。

org.openqa.selenium.firefox.NotConnectedException: Unable to connect
to host 127.0.0.1 on port 7055 after 45000 ms.
  • Firefox version:47.0
  • Selenium:2.53.0
  • Windows 10 64 bit

是否有人遇到类似问题或任何想法,解决方案是什么?在Chrome上运行正常,但在Firefox上未加载任何URL。


阅读 377

收藏
2020-03-06

共1个答案

一尘不染

不幸的是,Selenium WebDriver 2.53.0与Firefox 47.0不兼容。处理Firefox浏览器(FirefoxDriver)的WebDriver组件将停止使用。从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>3.8.1</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
    }
}
2020-03-06