2015-08-19 62 views
1

在我看來,我有一個複選框水豚have_selector不工作

<input type="checkbox" id="modal-checkbox" class="painter-modal-checkbox" data-reactid=".1.1:1.0.0"> 

在我的水豚的代碼,我試圖用have_selector方法

expect(page).to have_selector("#modal-checkbox") 

這個失敗,當我跟蹤頁面與

print page.html 

我可以證實,我的html代碼是存在的, 爲什麼會出現這種TES t失敗。

+0

請發佈完整的測試代碼和錯誤日誌。 –

回答

1

這通常是因爲該字段實際上不可見,因爲它是通過CSS隱藏的。使用複選框時,這通常是因爲設計需要使用標籤來顯示覆選框的選中狀態,而實際複選框處於隱藏狀態。要檢查是否存在可見性問題,您可以傳遞可見:false爲have_selector,但99%的時間您不應檢查不可見項目,因爲用戶無法看到它們或與它們交互

+0

那麼應該用什麼來檢查隱藏的標籤呢?我遇到了這個問題,我想在我的視圖測試中檢查表單字段(不是集成或特性測試),而是查看我需要的測試,以確保我生成正確的字段,可見或不)。 –

+0

嗯,稍後我會找到答案:將「visible:false」參數添加到has_selector調用中。例如: expect(呈現).to have_selector('input [type =「hidden」]',visible:false) –

+0

@GrantNeufeld正確 - 正如答案中提到的那樣 - 但是檢查不可見元素的存在是否真的是測試中不良的代碼味道。如果用戶不可見或不在頁面代碼中,它對用戶有什麼不同?您應該測試使其可見的行爲或取決於它們隱藏在頁面上而不是測試隱藏元素的存在。 –