注:這個問題是關於使用水豚1.1.2,而不是最新版本。如何用水豚測試野外可見度?
我有一個隱藏的文本字段和一個使其可見的按鈕。
隱藏的文本字段:
<input type="text" name="Franchise Name" id="new_franchise_name" placeholder="Franchise Name" style="display:none;" />
按鈕和js事件處理這使得上述領域可見:
<button class="btn btn-medium" id="create_franchise" data-remote="true" >Create New Franchise</button>
$('#create_franchise').click(function(){
$('#new_franchise_name').css('display', 'inline-block');
}
在我的測試中,我有以下幾點:
page.all('#new_franchise_name') #=> returns array with text input
Capybara.ignore_hidden_elements = true
page.all('#new_franchise_name') #=> returns empty array as expected
page.find_button('Create New Franchise').click #=> sets the input css "display:inline-block"
page.all('#new_franchise_name') #=> still returns empty array. Should include the text field
我已經探索了其他一些方法,但這似乎是最直接的...除了它不起作用。有什麼建議麼?
感謝您的提示!確實非常有用的建議。問題是這不會解決我遇到的問題,因爲這些預期不會測試元素的可見性。 'input#new_franchise_name'存在與否點擊按鈕。我也遇到以下錯誤:'RSpec :: Expectations :: ExpectationNotMetError:expected css「#new_franchise_name」當這些方法應該返回一個布爾值時不返回任何東西'。任何建議 –
@JesseNovotny期望不返回布爾值 - 它們要麼成功要麼提出錯誤,這通常是測試中需要的。聽起來你已經在某處寫了'Capybara.ignore_hidden_elements = false',這在編寫測試時是一個很糟糕的想法(雖然自動化是可以的),因爲這意味着你不再測試用戶能夠看到/做什麼。我將更新答案以指定所需的可見性,但更好的解決方案是停止更改ignore_hidden_elements的默認值 –
謝謝!那個石頭。我的理解是'Capybara.ignore_hidden_elements'默認爲false。它目前正在返回false,並且我只設置它在pry中嘗試。 –