用于PhantomJSDriver的WebDriverManager无法正常工作

时间:2017-01-19 12:09:02

标签: maven selenium selenium-webdriver phantomjs

我无法让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(...)行时,它不再起作用了。谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

看起来你提前断言,所以当你调用getTitle()时页面没有被加载。你的println打印出来了什么?

尝试添加等待测试,如果您知道页面标题应该是“Google”,那么为什么不在进行任何进一步的断言之前等待它?当页面标题等于您的期望时,您可以合理地确信页面已加载。试试这个:

public Boolean waitForPageIsLoaded(String title) {
    return new WebDriverWait(driver, 10).until(ExpectedConditions.titleIs(title));
}