如何使用 Maven 使用 Selenium 3.4.0 启动 FireFoxDriver?
Posted
技术标签:
【中文标题】如何使用 Maven 使用 Selenium 3.4.0 启动 FireFoxDriver?【英文标题】:How to start FireFoxDriver using Selenium 3.4.0 using Maven? 【发布时间】:2017-10-01 03:55:26 【问题描述】:我正在尝试在 maven 项目中使用 Selenium 的最新版本 3.4.0。我使用以下依赖项导入了所有 Selenium 的罐子:-
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.4.0</version>
</dependency>
问题是我无法在 Eclipse 的项目中解决 main 方法中以下代码的任何依赖关系:-
public class FirefoxTest
public static void main(String[] args)
FirefoxOptions options = new FirefoxOptions();
options.setBinary("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); //This is the location where you have installed Firefox on your machine
FirefoxDriver driver = new FirefoxDriver(options);
driver.get("http://www.google.com");
我错过了什么? Eclipse 无法将 FirefoxDriver 类型解析为任何依赖项。请帮忙。
【问题讨论】:
【参考方案1】:要使用 Selenium 3.4.0 和 Mozilla Firefox 53.x,您需要从 here 下载最新的 geckodriver v0.16.1。将其保存在您的机器中并在您的代码中提供 geckodriver 的绝对路径。
确保您已将 pom.xml 更新为所需的依赖项,如下所示:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.4.0</version>
</dependency>
建议使用WebDriver
接口而不是使用FirefoxDriver
实现。
您的代码将如下所示:
System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.navigate().to("http://www.google.com");
提供以下命令来清除以前的依赖项,安装新的依赖项并执行您的测试:
>mvn clean
>mvn install
>mvn test
【讨论】:
【参考方案2】:我遇到了同样的问题,并且一直在寻找解决方案。即使您更改了代码或依赖项,您的代码仍然会从错误中获取 selenium jar,因为您的代码已经构建并且分配了错误的 selenium jar。
按照以下步骤操作:
-
右键单击 Eclipse 项目上的 Maven 依赖项,然后单击配置 Maven 依赖项,然后从列表中下拉 Maven 依赖项并确定它所在的
.m2
文件夹。
识别.m2
文件夹后,打开它,转到存储库并转到org 文件夹。
在该文件夹中删除所有 Selenium 文件夹。
回到您的pom.xml
文件,粘贴Selenium 3.4.0 依赖项并删除所有3.5.3 或其他内容(仅3.4.0 依赖项就足够了)。再次删除所有其他 selenium 依赖项。
最后,保存您的文件并从项目部分构建它,现在您应该可以开始了。
【讨论】:
【参考方案3】:我找不到 Selenium 3.4+ 现在需要的 gecko 驱动程序的 Maven 坐标。有人可能已经创建了一个公共存储库,但下载驱动程序并将它们直接添加到项目中仍然很简单。为避免静态路径问题(将这些驱动程序保留在项目中,以便以后不会中断,并且可以在不复杂设置的情况下发送整个项目)最好将这些驱动程序放在您的项目src/main/resources
文件夹下。
从https://github.com/mozilla/geckodriver/releases 下载驱动程序(ARM、Linux、Mac 和 Windows 驱动程序下载)
如果您使用多个操作系统,您可能希望根据操作系统切换使用哪个驱动程序:How do I programmatically determine operating system in Java?
package com.kenmcwilliams.demo;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
/**
*
* @author ken
*/
public class App
public static void main(String[] args)
//if you're going to use more than one OS, you should make this switchable based on OS.
Path path = FileSystems.getDefault().getPath("src/main/resources/geckodriver");
System.setProperty("webdriver.gecko.driver",path.toString());
WebDriver driver = new FirefoxDriver();
//from here down is just a working example...
driver.get("http://www.google.com");
WebElement element = driver.findElement(By.name("q"));
element.sendKeys("Cheese!");
element.submit();
System.out.println("Page title is: " + driver.getTitle());
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>()
public Boolean apply(WebDriver d)
return d.getTitle().toLowerCase().startsWith("cheese!");
);
System.out.println("Page title is: " + driver.getTitle());
driver.quit();
【讨论】:
【参考方案4】:下载 Gecko 驱动:https://github.com/mozilla/geckodriver/releases
System.setProperty("webdriver.gecko.driver", "c:\\geckodriver.exe");
WebDriver driver = new MarionetteDriver();
driver.get("http://www.google.com");
【讨论】:
【参考方案5】:使用以下依赖项下载 selenium。
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.4.0</version>
</dependency>
下载依赖项后。执行构建项目。
这将解决您的问题
【讨论】:
【参考方案6】:在你的 pom.xml 中添加这个
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-firefox-driver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-firefox-driver</artifactId>
<version>3.13.0</version>
</dependency>
我来自here
【讨论】:
以上是关于如何使用 Maven 使用 Selenium 3.4.0 启动 FireFoxDriver?的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有 ChromeDriver.exe 的情况下在 Maven 中使用 selenium-chrome-driver