当从 Eclipse 进行 运行 Serenity 测试时,如何指定 Selenium Hub URL?

How do I specify the Selenium Hub URL when running Serenity tests from Eclipse?

我正在尝试将 Serenity BDD 测试框架与 JUnit 一起使用,而不是直接使用 Selenium,但我不知道如何为 Serenity 管理的 WebDriver 实例提供 URL我的 Selenium Hub 以一种适用于来自 Eclipse 的 运行 测试的方式(使用 "Run As > JUnit Test")。

使用 @Manageddriver="remote" 正确尝试创建一个 org.openqa.selenium.remote.RemoteWebDriver 实例...

@RunWith(SerenityRunner.class)
public class SerenityIT {
    @Managed(driver="remote") WebDriver browser;
    //[...]
}

...但这失败了

Caused by: java.lang.NullPointerException: null at java.net.URL.(URL.java:532) ~[na:1.8.0_151]

这并不奇怪,因为没有指定 URL。那么我应该如何通过 Selenium Hub URL?

当从 Eclipse 进行 运行 测试时,我们的 Serenity 也会加载 serenity.properties,尽管这既没有记录也没有暗示。我写了一个,Serenity 找到了它,控制台中的日志证实了这一点:

DEBUG [net.thucydides.core.util.PropertiesFileLocalPreferences:115] - LOADING LOCAL PROPERTIES FROM /integration-testing/serenity.properties

Selenium Hub 的 URL 然后可以按照 webdriver.remote.url 的文档提供。以下是我当前使用的属性,以及传递 Firefox 首选项的示例。

webdriver.driver=remote
webdriver.remote.driver=firefox
webdriver.remote.url=http://127.0.0.1:4444/wd/hub
webdriver.timeouts.implicitlywait=10000
firefox.preferences=devtools.jsonview.enabled=false

也可以在serenity.conf文件中配置

就是这样;

# Remote
webdriver {
  driver = remote
  remote {
      url="http://localhost:4445/wd/hub"
      driver=chrome
  }
}