在 Serenity 上设置 PhantomJS webDriver
Set PhantomJS webDriver on Serenity
我正在使用 Selenium-serenity 进行集成测试。默认情况下,selenium 为 WebDriver 集成了 FirefoxDriver,但现在我想做的是使用 PhantomJS。到目前为止,我找不到如何在初始化后正确设置驱动程序。
到目前为止,我所做的是覆盖 pageObject 的 getDriver() 方法和 return 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 上的每一个动作都不会传播到其他页面,因为我们当然只是 returning 单例 webDriver,而不是 super.getDriver()。
我的问题是如何正确设置 webdriver on serenity 以在新实例的多个页面对象之间共享状态。
使用 Firefox 似乎完美无缺。
您需要将 webdriver.driver
属性 设置为 phantomjs。平静地,这可以通过命令行传递,在属性文件中定义,或在代码中注释。您可能还需要通过系统指定 phantomjs 驱动程序的位置 属性 -Dphantomjs.binary.path=path/to/driver
.
你提到你正在使用注释,你试过了吗@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.driver
,
webdriver.provided.type
、webdriver.provided.mydriver
、thucydides.driver.capabilities
Serenity 文档:http://thucydides.info/docs/serenity-staging/
我正在使用 Selenium-serenity 进行集成测试。默认情况下,selenium 为 WebDriver 集成了 FirefoxDriver,但现在我想做的是使用 PhantomJS。到目前为止,我找不到如何在初始化后正确设置驱动程序。
到目前为止,我所做的是覆盖 pageObject 的 getDriver() 方法和 return 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 上的每一个动作都不会传播到其他页面,因为我们当然只是 returning 单例 webDriver,而不是 super.getDriver()。
我的问题是如何正确设置 webdriver on serenity 以在新实例的多个页面对象之间共享状态。
使用 Firefox 似乎完美无缺。
您需要将 webdriver.driver
属性 设置为 phantomjs。平静地,这可以通过命令行传递,在属性文件中定义,或在代码中注释。您可能还需要通过系统指定 phantomjs 驱动程序的位置 属性 -Dphantomjs.binary.path=path/to/driver
.
你提到你正在使用注释,你试过了吗@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.driver
,
webdriver.provided.type
、webdriver.provided.mydriver
、thucydides.driver.capabilities
Serenity 文档:http://thucydides.info/docs/serenity-staging/