我对整个Selenium
/ Geb
事情有点新意,所以我可能会对此有点不对,但我正试图获得exists()
以下代码中的方法可以正常工作。
class Question extends Module {
static base = { $("fieldset") }
static content = {
input { $("input[type=text]") }
name { input.getAttribute("name").toString() }
}
boolean exists() {
return input.isPresent()
}
令人沮丧的是,当我尝试执行该代码时(来自Spock测试,“转到”包含此模块的PageObjectm,我得到以下内容:
所需页面内容'输入 - SimplePageContent(所有者:问题 - 问题(所有者:MyPage,args:[],值:null),args:[],值:null)'不存在
我尝试了很多其他的事情,包括:
if (input) return true; return false
,... input.size() == 0
,static at = {...}
(模块似乎不支持“任何想法
答案 0 :(得分:9)
默认情况下,Geb确保您的内容定义返回非空元素。如果您的内容是可选的,则可以使用required
content option:
name(required: false) { input.getAttribute("name").toString() }
因为Geb利用Groovy Truth重新定义导航器被强制转换为布尔值的方式(空导航器是假的而非空的是真的),您可以将exists
方法简化为:
boolean exists() {
input
}