geb.Page
Учитывая, как:Понимание того, как получить доступ к объектам контента на geb.Page
class ConsultaPage extends Page {
static url = "web/search-basic"
static content = {
titol { $('h4',0).text() }
searchBox { $(name: "criteria").module(TextInput) }
searchButton { $(By.id("submit_button")) }
seriesBuscadorButton { $('img', src:"/web/resources/img/find") }
}
static at = {
$("#serveis h2").text() == "Menú consulta"
}
void openSeriesBuscador(){
seriesBuscadorButton.click()
}
}
И в Spec, как:
class id_3031_PageSpec extends BaseGebSpec {
def "login ok com usuari normal accedeix a consulta i obre minibuscador series"(){
given:
via iArxiuPage
when:
// unrelated stuff...
then:
to ConsultaPage
and:
//this works -> $('img', src:"/refweb/resources/img/find")*.click()
//this also works-> seriesBuscadorButton.click()
openSeriesBuscador()
then:
titol.equals("Cerca i selecció de sèrie")
}
}
(BaseGebSpec только в GebSpec с общим setupSpec() для читая общие свойства для всех характеристик)
Если я запустил это, я получаю:
Condition not satisfied:
openSeriesBuscador()
|
null
Condition not satisfied:
openSeriesBuscador()
|
null
Если вместо использования: openSeriesBuscador()
метода (который использует переменную контент с логикой же $()) Я использую $('img', src:"/refweb/resources/img/find").click()
или seriesBuscadorButton.click()
она прекрасно работает.
Я думаю, что я неправильно понимаю функциональность переменных содержимого или доступ к ним, но я не смог найти его, глядя на книгу Геб. Может ли кто-нибудь помочь мне понять это поведение?
Почему доступ к переменной статического содержимого внутри страницы метода невозможен, но не соответствует классу Spec? Спасибо заранее!
Я звонил в блок «и:», а не в «затем:». В любом случае спасибо за совет! – exoddus
Блок 'и:', расположенный после блока 'then:', эквивалентен блоку 'then:', и инструкции, помещенные в такой блок, будут утверждаться для вас, следовательно, для ошибки. Изменение типа возврата на 'def' заставляет его работать, но это скорее обходное решение, чем требование, потому что вы действительно не хотите утверждать результат этого вызова в этом случае. – erdi
Crystal clear now! – exoddus