我正在使用水豚編寫一些功能測試,用於涉及大量JavaScript刷新的頁面(當用戶單擊「繼續」時,網址將保持不變按鈕,但隱藏的內容將被顯示,並且顯示的內容將被隱藏,以便在頁面上的任何給定點處存在大量的文本/選擇器/等,但對用戶隱藏。當ignore_hidden_elements爲true時,不能在水豚中填充任何隱藏的元素
爲了測試這個功能,我想讓Capybara的ignore_hidden_elements配置選項爲真,因爲它最能代表用戶體驗。
但是在頁面上也有一些jQuery插件使用奇特的圖形來填充隱藏的基本HTML元素,我想用Capybara來爲這些元素選擇正確的值,而不是嘗試使用Javascript手動模擬用戶與元素進行交互。
特別是,我試圖測試設置爲display:none的選擇框,並在用戶與它們交互時由jQuery插件填充。我很想能夠做到這一點:
select('value', from: 'select_box')
但選擇框是隱藏的。
所以,我想這一點:
select('value', from: 'select_box', visible: false)
但也不能工作。我不願意將ignore_hidden_elements設置爲false,因爲它更不好模擬用戶,我不得不返回併爲許多測試行添加「visible:true」。
任何想法如何做到這一點?有沒有更整齊地取消ignore_hidden_elements的選項?
編輯 - 繼安德烈的回答,我轉身ignore_hidden_elements爲false,然後做了同樣的選擇水豚作爲測試前:
select 'value', from: 'select_box_id'
和魔法一樣,它的工作。當我再次改變ignore_hidden_elements爲真,並嘗試這一行:
select 'value', from: 'select_box_id', visible: false
我得到這個錯誤:
Failure/Error: select 'value', from: 'select_box_id', visible: false
Capybara::ElementNotFound:
Unable to find select box "select_box_id"
任何機會,這不是一個錯誤?我應該報告嗎?
如果'select('value',from:'select_box',visible:false)'不會比'select'('value',from:'select_box')'Caplay.ignore_hidden_elements = false'將不起作用。如果它有效,它應該被視爲水豚中的一個錯誤。 'ignore_hidden_elements'和'visible'選項影響相同的參數 – 2013-05-13 19:23:57
然後我認爲這是一個錯誤。上面的細節。 – Sasha 2013-05-13 19:56:16
你的水豚版本是什麼? – 2013-05-13 20:03:14