Geb / Spock:模块中的页面内容设置(必需:false)

时间:2016-02-05 10:32:16

标签: groovy spock geb

我在页面上有一个重复的表结构,如下所示:

<tr>
  <td>some text</td>
  <td>some integer</td>
  <td>empty</td>
  <td>some text</td>
  <td>empty</td>
  <td>contains an input field for the most part, but sometimes it may be blank/radio button/checkbox/etc.</td>
</tr>

我在Geb中创建了一个模块,用于对重复内容进行建模,如下所示:

class RowModule extends Module {

    static content = {
        cell { $("td", it) }
        description { cell(0).text() }
        rubrikNum { cell(1).text().toInteger() }
        preDefinedValue { cell(3).text() }
        inputField(required: false) { cell(5).$("input") }            
    }
}

我已经验证我能够使用上面的代码获取包含输入字段的所有行。但是,每当我在最后一个“td”中遇到非输入字段时,我会收到以下错误:

geb.error.RequiredPageContentNotPresent: The required page content 'cell - SimplePageContent (owner: modules.RowModule@6fec88c4, args: [5], value: null)' is not present

由于我已经将内容定义为不需要,我希望能够将所有单元格和不包含输入字段的单元格取为null或“EmptyNavigator”。我使用的是Geb 0.12.2和Spock 1.0。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

我认为你的问题是,你试图访问不存在的数组的第5个元素!类似于indexOutOfBounds异常......所需:false仅在5. cell存在但没有输入元素的情况下才有效。