Geb覆盖Web驱动程序

时间:2014-11-11 17:19:40

标签: webdriver htmlunit geb htmlunit-driver

我正在使用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

1 个答案:

答案 0 :(得分:1)

我有点惊讶你看到Setting JavaScript打印出来了但是发生的事情是你的驱动程序关闭没有被调用,因为如果你使用geb.driver系统属性那么Geb会创建驱动程序对你内心的基础。我建议您使用env在GebConfig.groovy中创建驱动程序,或使用与geb.driver不同的系统属性来请求使用给定的驱动程序impl并自行管理驱动程序。