如何检查Geb模块是否存在“内容”?

时间:2013-12-19 22:07:24

标签: geb

我对整个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 = {...}(模块似乎不支持“

任何想法

1 个答案:

答案 0 :(得分:9)

默认情况下,Geb确保您的内容定义返回非空元素。如果您的内容是可选的,则可以使用required content option

告诉您
name(required: false) { input.getAttribute("name").toString() }

因为Geb利用Groovy Truth重新定义导航器被强制转换为布尔值的方式(空导航器是假的而非空的是真的),您可以将exists方法简化为:

boolean exists() {
    input
}