В приведенном ниже примере (взято из Книги Геба ) мы нажимаем кнопку, которая переносит нас на другую страницу.
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 ast не выполняется.Есть идеи?