我不喜歡手動編寫一個循環來迭代並驗證每個單元格的事情,因爲您只能看到第一個失敗的結果。如果說有兩個空白的單元格,則測試失敗將只顯示一個單元格。
因此,我嘗試使用檢查每個元素的內置期望匹配器(例如all
)。例如,以下內容將獲取每個單元格的文本長度,並確保它至少有一個字符長。請注意,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
使用頁面對象寶石將是(略有不同的方法)類似。假設表格在頁面中被定義爲financials_grid
:
page = MyPage.new(browser)
expect(
page.financials_grid_element.cell_elements.map(&:text).map(&:length)
).to all(be > 0)
很好。謝謝,賈斯汀。這是我期望的更好。即使我有一個空單元,它已經很糟糕了。因此,即使找到一個空單元也不是什麼壞事,因爲不應該有一個空單元。 –