我正在使用 Ratpack 和资产管道构建前端,并正在使用 Geb 对其进行测试。我需要一些页面是动态的,并且由于 Knockoutjs 似乎不再处于开发阶段,我一直在使用 VueJS。我的问题是,虽然我能够从我的 Vue 模型中直观地看到数据,但我的 Geb 测试由于找不到内容而中断。我尝试增加额外的时间,切换到不同的浏览器(我主要使用 PhantomJS,但尝试使用 Firefox 和 Chrome),并且每次以这种方式运行时我都无法看到元素。我可以移开视线并继续开发,但如果我至少无法验证页面上显示的内容,那感觉不对。我知道 Vue 相对较新,但我想如果你使用 ReactJS 的东西可能会发生同样的情况。我' 下面附上相关的代码部分。对此进行测试的最佳方法是什么?
构建.gradle
testCompile "org.spockframework:spock-core:1.0-groovy-2.4", {
exclude module: "groovy-all"
}
testCompile "org.gebish:geb-spock:0.10.0"
// Geb integration
testCompile "org.seleniumhq.selenium:selenium-chrome-driver:2.51.0"
testCompile "org.seleniumhq.selenium:selenium-firefox-driver:2.51.0"
testCompile("com.codeborne:phantomjsdriver:1.2.1") {
// phantomjs driver pulls in a different selenium version
transitive = false
}
vuetest.gtpl
layout 'layouts/main.gtpl',
title: 'Vue Test',
bodyContents: contents {
div('id':'main'){
p "The result is:"
vuetest{}
}
}
VueTest.js
Vue.component('vuetest', {
template: '<p>Hello from Vue</p>'
})
VueTestPage.groovy
import geb.Page
class VueTestPage extends Page {
static url = "/"
static at = { title == "Vue Test" }
static content = {
vueGreeting(required:false){$('p',text:"Hello from Vue").text()}
}
}
测试
def "vue testing"(){
when:
to VueTestPage
then:
at VueTestPage
waitFor(vueGreeting.displayed) //fails
}