在下面的示例中(取自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