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

Geb/Spock: setting (required: false) on page content in a module not working

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

<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

因为我已经将该内容定义为不需要,所以我希望能够获取所有单元格以及那些不包含输入字段的单元格为空或 "EmptyNavigator"。我正在使用 Geb 0.12.2 和 Spock 1.0。

我错过了什么?

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