我正在使用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的任何想法?
答案 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它与你的无头幻影浏览器截图 - 非常酷的功能!