Grails,Geb& Co.的功能测试PhantomJS无法正常工作

时间:2014-08-15 09:37:51

标签: grails selenium groovy phantomjs spock

我正在使用Gebish& amp; HtmlUnitDriver。到目前为止一切都很好。

出于速度原因,我将驱动程序更改为PhantomJS:http://phantomjs.org/

我的GebConfigs.groovy看起来像这样:

import org.openqa.selenium.phantomjs.PhantomJSDriver
import org.openqa.selenium.remote.DesiredCapabilities
import org.openqa.selenium.WebDriver
import org.openqa.selenium.Dimension

driver {
    ArrayList cliArgsCap = new ArrayList();
    cliArgsCap.add("--web-security=false");
    cliArgsCap.add("--ssl-protocol=any");
    cliArgsCap.add("--ignore-ssl-errors=true");

    DesiredCapabilities desiredCapabilities = new DesiredCapabilities()
    desiredCapabilities.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, cliArgsCap);

    PhantomJSDriver d = new PhantomJSDriver(desiredCapabilities)
    d
}

如您所见,无论PhantomJSDriver应该用于哪些测试。

我的BuildConfig.groovy

test "org.gebish:geb-spock:$gebVersion"
test "org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion"
test "org.seleniumhq.selenium:selenium-remote-driver:$seleniumVersion"
test "org.seleniumhq.selenium:selenium-htmlunit-driver:$seleniumVersion"
test "org.seleniumhq.selenium:selenium-support:$seleniumVersion"
test "org.spockframework:spock-grails-support:0.7-groovy-2.0"


test "org.grails:grails-datastore-test-support:1.0-grails-2.4"

test( "com.github.detro.ghostdriver:phantomjsdriver:1.1.0" ) {
    transitive = false
}

phantomjs.exe位于:

C:\Apps\selenium\phantomjs\phantomjs.exe

C:\Apps\selenium\phantomjs位于PATH。我可以在交互模式下通过cmd: phantomjs运行它。

问题

由于某些不明原因,geb仍在使用HtmlUnitDriver。见日志:

Error |
2014-08-15 14:01:26,630 [JS executor for com.gargoylesoftware.htmlunit.WebClient@527a4013] ERROR     
javascript.StrictErrorReporter  - runtimeError: message=[The data necessary to complete this 
operation is not yet available.] sourceName=[http://localhost:8080/myapp/aui/js/aui-all.js] line=
[1] lineSource=[null] lineOffset=[0]

为什么在这种情况下不使用phantomjsdriver的任何想法?

1 个答案:

答案 0 :(得分:2)

我使用Grails 2.0.4应用程序启动并运行。我的buildConfig.groovy看起来像这样:

def gebVersion = "0.9.2"
def seleniumVersion = "2.35.0"

...

    test "org.gebish:geb-spock:$gebVersion"
    test "org.gebish:geb-junit4:$gebVersion"        
    test( "com.github.detro.ghostdriver:phantomjsdriver:1.0.1" ) {
        transitive = false
        exclude "xml-apis"
        exclude "xercesImpl"
    }
    test ("org.seleniumhq.selenium:selenium-remote-driver:$seleniumVersion") { // Needed by phantomjsdriver
        exclude "xerces"
        exclude "xercesImpl"
    }

希望有所帮助

更新必须在我自己的示例上运行一点,但结果是一个有效的Grails 2.4.2应用程序与phantomjs:https://github.com/rdmueller/SO25324259(抱歉可怕的格式化 - 只我签入后看到了它。

顺便说一下:我没有让你的DesiredCapabilities工作: - (

PS:你知道报告功能吗? https://github.com/rdmueller/SO25324259/blob/master/test/functional/DemoSpec.groovy#L14

它与你的无头幻影浏览器截图 - 非常酷的功能!