随着对Maven的要求出现,我将pom.xml添加到项目并将现有项目转换为Maven。 这是IE WebDriver启动的堆栈跟踪。类似我得到的Chrome。 FF完美运行;这很奇怪,但Safari也会运行。
java.lang.IllegalStateException: The driver executable does not exist: C:\Users\yuliya.savytska\.m2\repository\org\seleniumhq\selenium\selenium-ie-driver\2.44.0\selenium-ie-driver-2.44.0
at com.google.common.base.Preconditions.checkState(Preconditions.java:197)
at org.openqa.selenium.remote.service.DriverService.checkExecutable(DriverService.java:117)
我的pom.xml: `http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 org.sonatype.mavenbook.simple webdriverbasics 罐 1.0-SNAPSHOT webdriverbasics http://maven.apache.org
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.44.0</version>
</dependency>
</dependencies>
`
在代码中调用驱动程序:
private static WebDriver getDriver(){
if (driver == null) {
String browser = getBrowserType();
switch (browser) {
case "firefox":
driver = new FirefoxDriver();
driver.manage().window().maximize(); break;
case "chrome":
System.setProperty("webdriver.chrome.driver",
"C:\\Users\\yuliya.savytska\\.m2\\repository\\org\\seleniumhq\\selenium\\selenium-chrome-driver\\2.44.0\\selenium-chrome-driver-2.44.0");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("test-type");
chromeOptions.addArguments("start-maximized");
driver = new ChromeDriver(chromeOptions);
driver.manage().window().maximize(); break;
case "iexplorer":
System.setProperty("webdriver.ie.driver",
"C:\\Users\\yuliya.savytska\\.m2\\repository\\org\\seleniumhq\\selenium\\selenium-ie-driver\\2.44.0\\selenium-ie-driver-2.44.0");
driver = new InternetExplorerDriver(); break;
case "safari":
DesiredCapabilities dcap = DesiredCapabilities.safari();
dcap.setPlatform(Platform.MAC);
driver = new SafariDriver(dcap); break;
default: throw new RuntimeException();
}
}
return driver;
}
我的M2_REPO位于它的位置,这些驱动程序就像我在代码中提到的位置上的罐子一样。 (这种获得绝对路径的方式对我来说非常臭,所以如果想法也是完美的那样)
在我使用ChromeDriver和IEDriver作为exe文件并且没有Maven之前 - 一切都运行正常。
我的WebDrivers和Maven出了什么问题?
答案 0 :(得分:2)
"webdriver.chrome.driver"
和"webdriver.ie.driver"
请参考您可以在
https://code.google.com/p/selenium/wiki/ChromeDriver
和
https://code.google.com/p/selenium/wiki/InternetExplorerDriver
Safari和Firefox并不需要这样,所以它们开箱即用。您可能还需要一个Chrome二进制文件的路径,类似这样的
chromeOptions.setBinary(new File("THE PATH TO YOUR CHRMOE BINARY
&#34));
答案 1 :(得分:2)
您需要下载第一个chrome驱动程序和32/64可执行文件,并将其保存在某个目录中。无法在POM.xml中添加可执行文件。 当您使用POM时,无需指定jar的路径.... POM会自动为您完成(只需向您的pom添加适当的依赖项)
以下示例可以帮助您
适用于Chrome
System.setProperty("webdriver.chrome.driver","C:\\Users\\yuliya.savytska\\Desktop\\drivers\\chromedriver.exe")
WebDriver driver = new ChromeDriver();
对于IE
System.setProperty("webdriver.ie.driver","C:\\Users\\yuliya.savytska\\Desktop\\drivers\\IEDriverServer_x64.exe")
WebDriver driver = new InternetExplorerDriver();
答案 2 :(得分:0)
重要的: 如果你初始化例如webdriver.ie.driver(3.0.1)不要忘记设置依赖关系selenium-remote-driver
<project>
<modelVersion>4.0.0</modelVersion>
<artifactId>guitest</artifactId>
<name>Maven Default Project</name>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-ie-driver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-ie-driver</artifactId>
<version>3.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-remote-driver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-remote-driver/3.0.1