我无法让WebDriverManager工作。我想使用PhantomJSDriver而不必像这样设置系统属性:
System.setProperty("phantomjs.binary.path", "E:/phantomjs-2.1.1-windows/bin/phantomjs.exe");
我在pom.xml中有这些依赖项:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>1.5.1</version>
</dependency>
这是我的代码/测试:
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class TestA {
WebDriver driver;
@BeforeClass
public static void setupClass() {
PhantomJsDriverManager.getInstance().setup();
}
@Before
public void setUp() {
driver = new PhantomJSDriver();
}
@Test
public void test() {
driver.get("https://www.google.de/");
System.out.println(driver.getTitle());
assertEquals("Google", driver.getTitle());
}
}
测试失败:
org.junit.ComparisonFailure: expected:<[Google]> but was:<[]>
有人知道我做错了什么吗?提前谢谢!
更新:现在我有另一个问题。在使用webdrivermanager之前,我有这个:
DesiredCapabilities dc = DesiredCapabilities.phantomjs();
dc.setJavascriptEnabled(true);
dc.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS,
new String[] { "--web-security=no", "--ignore-ssl-errors=yes" });
System.setProperty("phantomjs.binary.path", "E:/phantomjs-2.1.1-windows/bin/phantomjs.exe");
WebDriver driver = new PhantomJSDriver(dc);
现在,当我删除System.setProperty(...)
行时,它不再起作用了。谢谢你的帮助。
答案 0 :(得分:3)
看起来你提前断言,所以当你调用getTitle()时页面没有被加载。你的println打印出来了什么?
尝试添加等待测试,如果您知道页面标题应该是“Google”,那么为什么不在进行任何进一步的断言之前等待它?当页面标题等于您的期望时,您可以合理地确信页面已加载。试试这个:
public Boolean waitForPageIsLoaded(String title) {
return new WebDriverWait(driver, 10).until(ExpectedConditions.titleIs(title));
}