在Serenity上设置PhantomJS webDriver

时间:2015-11-17 17:59:53

标签: java selenium-webdriver phantomjs serenity-bdd cucumber-serenity

我正在使用Selenium-serenity进行集成测试。默认情况下,selenium将FirefoxDriver集成到WebDriver中,但现在我要做的就是使用PhantomJS。到目前为止我找不到如何在初始化后正确设置驱动程序。

到目前为止,我所做的是覆盖pageObject的getDriver()方法并返回phantomJs webDriver

private static WebDriver webDriver;

@Override
public WebDriver getDriver() {
    if (webDriver == null) {
        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setJavascriptEnabled(true);
        caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "/Users/pabloperezgarcia/Downloads/phantomjs");
        webDriver = new PhantomJSDriver(caps);
        setDriver(webDriver);
    }
    return webDriver;
}

但问题是,webdriver上的每一个动作都不会传播到其他页面上,因为我们当然只返回单例webDriver,而不是super.getDriver()。

我的问题是如何正确设置webdriver在宁静中共享多个页面对象之间的状态,这是新实例。

Firefox看起来非常完美。

1 个答案:

答案 0 :(得分:3)

您需要将webdriver.driver属性设置为phantomjs。在平静的情况下,这可以通过命令行传递,在属性文件中定义,或在代码中注释。您可能还需要通过系统属性-Dphantomjs.binary.path=path/to/driver指定phantomjs驱动程序的位置。

你提到你正在使用注释,你试过@Managed(driver="phantomjs")吗?

您也可以通过命令行传递(在IDE中,它将处于运行配置中)-Dwebdriver.driver=phantomjs

请注意,如果您正在远程运行测试,则可能还需要将phantomjs.webdriver属性设置为要运行的端口。

您还可以通过maven设置属性:

<properties>
    <webdriver.driver>phantomjs</webdriver.driver>
</properties>

然后在您的故障安全插件中定义系统属性

<plugin>
    <artifactId>maven-failsafe-plugin</artifactId>                  
    <version>2.18</version>
    <configuration>
        <systemProperties>
            <webdriver.driver>${webdriver.driver}</webdriver.driver> 
        </systemProperties>
    </configuration>
</plugin>

如果要定义自定义驱动程序提供程序,则需要确保实现DriverSource并定义以下属性webdriver.driverwebdriver.provided.typewebdriver.provided.mydriverthucydides.driver.capabilities

宁静文件:http://thucydides.info/docs/serenity-staging/