我正在学习自动化测试,并在Selenium Webdriver中编写了脚本,但是下面出现了很多错误。
我按照教程进行安装,并按照所有步骤进行操作,但是没有任何效果。
错误不会告诉我太多信息,因此任何人都可以查看一下并告诉我在这种情况下应该怎么做?
谢谢。
public static void main(String[] args) {
System.setProperty("webdriver.firefox.marionette","C:\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
String baseUrl = "http://www.facebook.com";
String tagName = "";
driver.get(baseUrl);
tagName = driver.findElement(By.id("email")).getTagName();
System.out.println(tagName);
driver.close();
System.exit(0);
Exception in thread "main" org.openqa.selenium.WebDriverException: Timed out waiting 45 seconds for Firefox to start.
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:48'
System info: host: 'DESKTOP-5N6LIMJ', ip: '192.168.0.16', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_221'
Driver info: driver.version: FirefoxDriver
at org.openqa.selenium.firefox.XpiDriverService.waitUntilAvailable(XpiDriverService.java:247)
at org.openqa.selenium.firefox.XpiDriverService.start(XpiDriverService.java:159)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:79)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:147)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:125)
at newpackage.MyClass.main(MyClass.java:12)
Caused by: org.openqa.selenium.net.UrlChecker$TimeoutException: Timed out waiting for [http://localhost:5176/hub/status] to be available after 45010 ms
at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:100)
at org.openqa.selenium.firefox.XpiDriverService.waitUntilAvailable(XpiDriverService.java:245)
... 8 more
Caused by: java.util.concurrent.TimeoutException
at java.util.concurrent.FutureTask.get(Unknown Source)
at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:156)
at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:75)
... 9 more
最佳答案
您应该使用WebDriverManager库,而不是手动设置驱动程序二进制文件。
WebDriverManager允许自动管理二进制文件
Selenium所需的驱动程序(例如chromedriver,geckodriver等)
WebDriver。
首先将其添加到您的项目中,例如
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>3.7.1</version>
</dependency>
然后将
System.setProperty("webdriver.firefox.marionette","C:\\geckodriver.exe");
替换为WebDriverManager.firefoxdriver().setup();
,WebDriverManager将为您做所有的魔术:它会检查计算机中安装的浏览器的版本(例如Chrome,Firefox)。
它会检查驱动程序的版本(例如chromedriver,geckodriver)。如果未知,它将使用驱动程序的最新版本。
如果WebDriverManager缓存中没有二进制文件(默认为〜/ .m2 / repository / webdriver),它将下载WebDriver二进制文件。
它将导出Selenium所需的适当的WebDriver Java环境变量(从
CLI或作为服务器)。
WebDriverManager解析Chrome浏览器的驱动程序二进制文件,
Firefox,Opera,PhantomJS,Microsoft Edge和Internet Explorer。对于
为此,它为这些浏览器提供了多个驱动程序管理器。这些
驱动程序管理器可以如下使用:
WebDriverManager.chromedriver().setup();
WebDriverManager.firefoxdriver().setup();
WebDriverManager.operadriver().setup();
WebDriverManager.phantomjs().setup();
WebDriverManager.edgedriver().setup();
WebDriverManager.iedriver().setup();
您应该使用Maven或Gradle来构建应用程序,请查看以下文章:Basic example program using WebDriver Java Maven