了解如何访问 geb.Page 处的内容对象
Understanding how to access content objects at 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()
}
}
还有像这样的规范:
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 只是一个具有通用 setupSpec() 的 GebSpec,用于读取所有规范的通用属性)
如果我 运行 我得到:
Condition not satisfied:
openSeriesBuscador()
|
null
Condition not satisfied:
openSeriesBuscador()
|
null
如果不使用:
openSeriesBuscador()
方法(使用具有相同 $() 逻辑的内容变量)
我使用 $('img', src:"/refweb/resources/img/find").click()
或 seriesBuscadorButton.click()
效果很好。
我想我没有正确理解内容变量的功能或访问方式,但我无法在 Geb Book 中找到它。谁能帮助我理解这种行为?
为什么在方法的页面中访问静态内容变量会失败,但不能从规范 class 中访问?
提前致谢!
问题出在方法
void openSeriesBuscador(){
seriesBuscadorButton.click()
}
应该是
def openSeriesBuscador(){
seriesBuscadorButton.click()
}
注意 def 而不是 void
首先你需要知道 def 代表什么,解释如下:
和 "magic" 在 then
spock 块中:
http://mrhaki.blogspot.de/2010/07/spock-spotlight-assert-magic.html
您应该在 when:
块而不是 then:
块中调用您的 openSeriesBuscador()
。
给出一个 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()
}
}
还有像这样的规范:
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 只是一个具有通用 setupSpec() 的 GebSpec,用于读取所有规范的通用属性)
如果我 运行 我得到:
Condition not satisfied:
openSeriesBuscador()
|
null
Condition not satisfied:
openSeriesBuscador()
|
null
如果不使用:
openSeriesBuscador()
方法(使用具有相同 $() 逻辑的内容变量)
我使用 $('img', src:"/refweb/resources/img/find").click()
或 seriesBuscadorButton.click()
效果很好。
我想我没有正确理解内容变量的功能或访问方式,但我无法在 Geb Book 中找到它。谁能帮助我理解这种行为?
为什么在方法的页面中访问静态内容变量会失败,但不能从规范 class 中访问? 提前致谢!
问题出在方法
void openSeriesBuscador(){
seriesBuscadorButton.click()
}
应该是
def openSeriesBuscador(){
seriesBuscadorButton.click()
}
注意 def 而不是 void
首先你需要知道 def 代表什么,解释如下:
和 "magic" 在 then
spock 块中:
http://mrhaki.blogspot.de/2010/07/spock-spotlight-assert-magic.html
您应该在 when:
块而不是 then:
块中调用您的 openSeriesBuscador()
。