【问题标题】:Set PhantomJS webDriver on Serenity在 Serenity 上设置 PhantomJS webDriver
【发布时间】:2015-11-18 05:43:39
【问题描述】:

我正在使用 Selenium-serenity 进行集成测试。默认情况下,selenium 为 WebDriver 集成了 FirefoxDriver,但现在我想做的是使用 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 on serenity 以在多个页面对象之间共享状态,这些对象是新实例。

使用 Firefox 似乎可以完美运行。

【问题讨论】:

  • 您如何管理您的资产?您是否尝试过将 phantomjs 作为 webdriver.driver 属性的值传递?您是在本地还是远程运行测试?
  • 将 Serenity 与默认 webDriver(Firefox) 一起使用我没有创建任何属性文件,只是在我的代码上添加注释,一切正常

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


【解决方案1】:

您需要将webdriver.driver 属性设置为phantomjs。使用 serenity 可以通过命令行传递、在属性文件中定义或在代码中进行注释。您可能还需要通过系统属性 -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

Serenity 文档:http://thucydides.info/docs/serenity-staging/

【讨论】:

  • 我可以看到如何配置 serenity 以使用属性文件的任何参考?现在我只是通过 Maven 的故障安全以及通过我的 IDE 运行测试。另外我应该把这个注释放在哪里? @Managed(driver="phantomjs") 在 Steps 类中?
  • 我更新了我的答案以解决您的问题。您使用的是什么 IDE?
  • 是的,如果您转到“运行”>“编辑配置”并将 -Dwebdriver.driver=phantomjs 粘贴到应该也可以使用的 VM 选项字段中(将 -ea 留在那里)。
  • 没有工作,仍然得到firefox webdriver,我不明白你是如何使用phantomJSDriver的,如果你看到我的问题,我必须创建指向我从phantomjs下载的phantomjs文件的PhantomJS WebDriver页面。
  • @paul 发布示例测试
猜你喜欢
  • 2014-01-01
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-20
  • 2013-08-16
相关资源
最近更新 更多