Selenium-在不修改PATH的情况下运行ChromeDriver



我正在尝试使用Selenium for Java制作一个简单的框架。尝试设置此功能的一个不幸方面是,我没有权限在Windows计算机上编辑SYSTEM级别的变量。

在试图运行一个JUnit测试时,它只是试图访问一个网站,然后断言它在我指向的页面上,我不断收到一个错误,即必须设置ChromeDriver可执行文件的路径。我确实在本地下载了这个。

Caused by: java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html

现在,我可以通过在程序的主入口点内的类中抛出System.setProperty("webdriver.chrome.driver", "/path/to/myexecutable.exe")来避免这个错误,但不知道如何使用单元测试来绕过这个问题。

我的基本测试:

package com.mytestpackage;
import org.junit.Assert;
import org.junit.Test;
public class UnitTest {
@Test
public void canGoToHomePage() {
Pages.homePage().goTo();
Assert.assertTrue(Pages.homePage().isAt());
}
}

我的三个简单类-浏览器、主页和页面:

浏览器

package com.mytestpackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class Browser {
static WebDriver driver = new ChromeDriver();
public static void goTo(String url) {
driver.get(url);
}
public static String title() {
return driver.getTitle();
}
}

主页

package com.mytestpackage;
public class HomePage {
static String url = "http://test.salesforce.com";
static String title = "Login | Salesforce";
public void goTo() {
Browser.goTo(url);
}
public boolean isAt() {
return Browser.title().equals(title);
}
}

页面

package com.mytestpackage;
public class Pages {
public static HomePage homePage() {
return new HomePage();
}
}

令人沮丧的主要原因是无法编辑系统变量。如有任何变通方法/变通方法建议,我们将不胜感激。

您看到的问题似乎是由WebDriverManager官方文档解决的

我们在我们的框架中使用它,它使所有用户都不必携带任何系统属性和chromedriver版本。(当你使用chromedriver的可执行文件时,你需要确保它也随着浏览器的更新而更新(

将以下方法添加到测试类中:

@BeforeClass
public static void setupClass() {
WebDriverManager.chromedriver().setup();
}

别忘了在pom.xml中为WebDriverManager附加一个依赖项(需要Java 8或更高版本(:

<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>3.0.0</version>
<scope>test</scope>
</dependency>

或在Gradle项目中:

dependencies {
testCompile("io.github.bonigarcia:webdrivermanager:3.0.0")
}

重要提示:从Browser类中的WebDriver字段声明中删除"static"。保持静态将不允许继续执行并行测试。

最新更新