验证空单元格的表

时间:2015-01-12 13:29:26

标签: cucumber watir watir-webdriver page-object-gem rspec-expectations

您能否建议某些脚本验证表格单元格是否为空值?我需要验证表中没有空单元格。

tableFG = page.table(:id => 'FinancialsGrid')
tableFG.rows.each do |row|
  row.cells.each do |cell|
    expect(cell.tableFG_element.text).should_not be_nil
  end
end

可能有另一种检查空值的方法。

1 个答案:

答案 0 :(得分:2)

我不喜欢手动编写循环迭代并验证每个单元格的一件事是你只能看到第一次失败的结果。如果有两个单元格为空,则测试失败只显示一个。

因此,我尝试使用检查每个元素的内置期望匹配器(ex all)。例如,以下内容获取每个单元格的文本长度,并确保其长度至少为1个字符。请注意,Watir会删除前导/尾随空格,因此长度为1应该是实际字符。

financials_grid = browser.table(:id => 'FinancialsGrid')
expect(financials_grid.tds.map(&:text).map(&:length)).to all( be > 0 )

失败的期望将如下所示并包括失败的每个单元格:

expected [1, 0, 0, 1] to all be > 0

object at index 1 failed to match:
expected: > 0
got:   0

object at index 2 failed to match:
expected: > 0
got:   0

使用页面对象gem类似(方法略有不同)。假设该表在页面中定义为financials_grid

page = MyPage.new(browser)
expect(
    page.financials_grid_element.cell_elements.map(&:text).map(&:length)
).to all( be > 0 )