添加pom.xml后无法使用IE和Chrome WebDrivers

时间:2014-11-05 12:43:29

标签: java eclipse maven selenium-webdriver

随着对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出了什么问题?

3 个答案:

答案 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