我使用gradle运行测试,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
我有点惊讶你看到Setting JavaScript
被打印出来,但实际情况是你的驱动程序闭包没有被调用,因为如果你使用geb.driver
系统属性,那么Geb会在此基础上在内部为你创建驱动程序。我建议您使用env在GebConfig.groovy
中创建驱动程序,或者使用与geb.driver
不同的系统属性来要求使用给定的驱动程序impl并自己管理驱动程序的创建。