0

我正在使用 gradle 运行我的测试,它以下列方式指定 JVM 属性:

-Dgeb.env=dev -Dgeb.driver=org.openqa.selenium.htmlunit.HtmlUnitDriver

这会在 Geb 配置脚本中设置驱动程序并配置环境。我想在环境属性中指定它后为 HtmlUnit 启用 JavaScript。更一般地说,我想在配置脚本中覆盖驱动程序(我对在每个测试setup()块中设置驱动程序不感兴趣)

我尝试将以下代码片段放入 Geb 配置脚本中:

if (System.getProperty("geb.driver")=="org.openqa.selenium.htmlunit.HtmlUnitDriver") {
    driver = {
        println "Setting JavaScript"
        def driver = new HtmlUnitDriver()
        driver.setJavascriptEnabled(true)
        driver
    }
}

这会打印出消息,但由于以下原因测试失败

java.lang.UnsupportedOperationException: Javascript is not enabled for this HtmlUnitDriver instance
4

1 回答 1

1

我有点惊讶你看到Setting JavaScript打印出来,但发生的是你的驱动程序闭包没有被调用,因为如果你使用geb.driver系统属性,那么 Geb 会根据它在内部为你创建驱动程序。我建议您要么使用 env 在您的驱动程序中创建驱动程序,GebConfig.groovy要么使用不同的系统属性,而不是geb.driver要求使用给定的驱动程序 impl 并自己管理驱动程序的创建。

于 2014-11-13T09:00:50.607 回答