2013-05-13 14 views
5

我正在使用水豚編寫一些功能測試,用於涉及大量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" 

任何機會,這不是一個錯誤?我應該報告嗎?

+0

如果'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

+0

然後我認爲這是一個錯誤。上面的細節。 – Sasha 2013-05-13 19:56:16

+0

你的水豚版本是什麼? – 2013-05-13 20:03:14

回答

1

這是一個在水豚2.0.x中的錯誤。 Here is a test case可在2.0.x但不在2.1中重現。

但是Capybara-Webkit維護者還沒有發佈Capybara 2.1兼容版本。你

可能的解決方案:

  • 使用水豚2。1兼容的驅動程序
  • 使用從GitHub上的主分支水豚,Webkit的
  • 不要試圖與不可見元素互動(它不工作,硒,所以我相信互動的可能性,應考慮在Capybara-一個bug Webkit)