我在使用火狐和WebDriver的时候遇到了错误。
org.openqa.selenium.firefox.NotConnectedException: Unable to connect
to host 127.0.0.1 on port 7055 after 45000 ms.
有没有人遇到类似的问题,或者知道解决方案是什么?它在Chrome上运行得很好,但在Firefox上,没有URL被加载。
发布于 2016-06-09 22:22:20
不幸的是,Selenium WebDriver 2.53.0与Firefox47.0不兼容。处理火狐浏览器(FirefoxDriver
)的WebDriver组件将停止使用。从3.0版开始,Selenium WebDriver将需要使用geckodriver
二进制文件来管理Firefox浏览器。更多信息here和here。
因此,为了在Selenium WebDriver 2.53.0中使用Firefox47.0作为浏览器,您需要下载Firefox driver (从0.8.0版开始,它是一个名为geckodriver
的二进制文件,以前是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.0.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
}
}
考虑到Marionette将是未来(对于WebDriver 3+和火狐48+)的唯一选择,但目前(编写时的版本为0.9.0 )不是很稳定。有关更多详细信息,请查看Marionette roadmap。
更新
Selenium WebDriver 2.53.1已于2016年6月30日发布。FirefoxDriver
可以再次使用火狐47.0.1作为浏览器。
发布于 2016-06-08 12:37:26
尝试使用firefox 46.0.1。它与Selenium 2.53最匹配
https://ftp.mozilla.org/pub/firefox/releases/46.0.1/win64/en-US/
发布于 2016-06-09 03:41:10
我也有同样的问题,我发现你需要更换驱动程序,因为support was dropped。为了运行测试,您需要使用Marionette驱动程序,而不是使用Firefox驱动程序。我目前正在通过自己的设置工作,可以发布一些建议的步骤,如果你喜欢,当我有一个工作的例子。
以下是我在Mac上的Java环境中使用它的步骤(在我的Linux安装(Fedora、CentOS和Ubuntu)中也适用):
mkdir -p /opt/marionette
)$PATH
目录中)更新您的.bash_profile
以包含该可执行文件(另外,编辑您的代码如果您确保您的chmod +x /opt/marionette/wires-x.x.x
使其成为启动时的可执行文件,请确保您使用以下代码(这是我在Mac上使用的代码)<代码>H221<代码>G222快速笔记
仍然没有像预期的那样工作,但至少现在启动了浏览器。需要找出原因--现在看起来我需要重写我的测试才能让它正常工作。
Java代码片段
WebDriver browser = new MarionetteDriver();
System.setProperty("webdriver.gecko.driver", "/opt/marionette/wires-0.7.1-OSX");
https://stackoverflow.com/questions/37693106
复制相似问题