我已經嘗試了所有這些命令,但沒有一個有效。我什至使用了 StackOverflow 的一些技巧,但我還不開心。我嘗試了所有這些命令,但沒有一個有效。我什至使用了 StackOverflow 的一些技巧,但我還不開心。我嘗試了所有這些命令,但沒有一個有效。我什至使用了 StackOverflow 的一些技巧,但我還不開心..
expect(find('.tvGrid').has_no_content?).to be true
expect(find('.tvGrid')).to have_no_content
expect(find('.tvGrid > tbody', visible: false)).not_to have_css('td')
expect(find('.tvGrid > tbody')).to have_no_content
<table width="100%" class="tvGrid">
<tbody>
<tr>
<th colspan="1" class="tvHeader">Id</th>
<th colspan="1" class="tvHeader">Code</th>
<th colspan="1" class="tvHeader">Description</th>
<th colspan="1" class="tvHeader">Operational Center</th>
<th colspan="1" class="tvHeader">Status</th>
</tr>
<tr class="tvRowEmpty">
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr class="tvRowEmpty">
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr class="tvRowEmpty">
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr class="tvRowEmpty">
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr class="tvRowEmpty">
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr class="tvRowEmpty">
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr class="tvRowEmpty">
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</tbody>
</table>
uj5u.com熱心網友回復:
這里的關鍵是告訴 Capybara 不要期望td有內容的元素。您可以在此處使用該text選項可以是正則運算式的事實來檢查該選項
expect(page).not_to have_css('.tvGrid td', text: /. /)
這將使 Capybara 確保沒有與.tvGrid td選擇器匹配的元素與文本內容的 1 個或多個字符相匹配,并將重試最多 Capybara.default_max_wait_time 秒以考慮動態頁面。您可以根據需要調整 Regexp 以允許任何可接受的內容。
uj5u.com熱心網友回復:
關鍵是您可以檢查td節點內是否沒有文本。有很多方法可以做到這一點
例如
expect(all('.tvGrid td').any? { |td| td.text.present? }).to be false
或者
expect(all('.tvGrid td').select { |td| td.text.present? }).to be_empty
或者
expect(all('.tvGrid td').all? { |td| td.text.blank? }).to be true
.blank?并且.present?是 ActiveSupport 方法。在 vanilla Ruby 中,您可以使用.strip.empty?這些方法來代替
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/460567.html
