tre*_*ode 2 java selenium selenium-chromedriver selenium-webdriver
我正在尝试使用 Selenium for Java 制作一个简单的框架。尝试设置它的不幸方面之一是我无权在我的 Windows 机器上编辑系统级变量。
在尝试运行仅尝试访问网站的单个 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
Run Code Online (Sandbox Code Playgroud)
现在,我可以通过System.setProperty("webdriver.chrome.driver", "/path/to/myexecutable.exe")
在程序的主入口点内的类中抛出 a 来避免该错误,但不确定如何使用单元测试解决此问题。
我的基本测试:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
还有我的三个简单类——浏览器、主页和页面:
浏览器
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();
}
}
Run Code Online (Sandbox Code Playgroud)
主页
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);
}
}
Run Code Online (Sandbox Code Playgroud)
页面
package com.mytestpackage;
public class Pages {
public static HomePage homePage() {
return new HomePage();
}
}
Run Code Online (Sandbox Code Playgroud)
令人沮丧的主要问题是无法编辑系统变量。任何hackaround/解决方法建议将不胜感激。
看来你看到的问题是由 WebDriverManager 解决的 -官方文档
我们在我们的框架中使用它,它使所有用户免于携带 chromedriver 的系统属性和版本。(当你使用 chromedriver 的可执行文件时,你需要确保它也随着浏览器的更新而更新)
将以下方法添加到您的测试类:
@BeforeClass
public static void setupClass() {
WebDriverManager.chromedriver().setup();
}
Run Code Online (Sandbox Code Playgroud)
并且不要忘记在您的 pom.xml 中附加一个对 WebDriverManager 的依赖(需要 Java 8 或更高版本):
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>3.0.0</version>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
...或在 Gradle 项目中:
dependencies {
testCompile("io.github.bonigarcia:webdrivermanager:3.0.0")
}
Run Code Online (Sandbox Code Playgroud)
重要的旁注:从浏览器类中的 WebDriver 字段声明中删除“静态”。保持静态将不允许您继续执行并行测试。
归档时间: |
|
查看次数: |
1374 次 |
最近记录: |