在下面的示例中(取自Book of Geb),我们正在单击一个按钮,将我们带到另一页面。使用geb&spock时在页面之间传递状态
class GoogleHomePage extends Page {
static url = "http://google.com"
static at = {
title == "Google"
}
static content = {
searchField { $("input[name=q]") }
searchButton(to: GoogleResultsPage) { $("input[value='Google Search']") }
}
}
Browser.drive(GoogleHomePage) {
searchField.value("Chuck Norris")
searchButton.click()
assert at(GoogleResultsPage)
assert resultLink(0).text() ==~ /Chuck/
}
如何在转到另一页时通过状态?例如,用户已经选择了这种语言,在下一页中,我希望页面可以使用该语言。一个更通用的例子:
import geb.*
import grails.plugin.geb.GebSpec
class GoogleHomePage extends Page {
static url = "http://google.com"
static at = { title == "Google" }
static content = {
searchField { $("input[name=q]") }
searchButton(to: GoogleResultsPage, searchTerm:searchField.value()) { $("input[value='Google Search']") }
}
}
class GoogleResultsPage extends Page {
def searchTerm
static at = {
title == "${searchTerm} - Google Search"
}
}
class MainFunctionalSpec extends GebSpec {
def "Google search"() {
when:
to GoogleHomePage
then:
searchField.value("Chuck Norris")
searchButton.click()
assert at(GoogleResultsPage)
}
}
此代码有2个问题,我得到一个“没有这样的属性:searchField类:GoogleHomePage”关于searchButton.click试图填充SEARCHTERM时()。即使我对传递的内容进行了硬编码,GoogleResultsPage.searchTerm也是null,并且at声明失败。有任何想法吗?
我可以在我的实际测试中检查此状态,但我宁愿将此断言保存在Page Model – Peter 2010-09-02 22:33:08