Geb覆盖web驱动程序



我使用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并自己管理驱动程序的创建。

相关内容

  • 没有找到相关文章

最新更新