2016-03-03 45 views
0

我有一個名爲user_email的隱藏字段。它看起來像這樣:爲什麼水豚堅持我的隱藏領域是可見的?

<input type="hidden" value="[email protected]" name="user[email]" id="user_email"> 

出於某種原因,水豚是相信,這是一個明顯的元素:

$ page.find '#user_email' 
#<Capybara::Node::Element tag="input" path="/html/body/div[2]/div/section/div/form/div[1]/div[4]/input"> 

$ page.find '#user_email', visible: :visible 
#<Capybara::Node::Element tag="input" path="/html/body/div[2]/div/section/div/form/div[1]/div[4]/input"> 

$ page.has_css? '#user_email', visible: :visible  # => true 
$ page.has_css? '#user_email', visible: false  # => true  
$ page.has_css? '#user_email', visible: true   # => true 
$ page.has_css? '#user_email', visible: :hidden  # => false 
$ page.all('#user_email').count      # => 1 
$ page.all('input[type=hidden]#user_email').count # => 1 

設置Capybara.ignore_hidden_elements沒有效果。我重新啓動了我的機器,以確保我沒有發瘋。我在這裏錯過了什麼,或者隱藏的領域不應該隱藏起來嗎?

+1

你使用什麼驅動程序? –

+0

如果您將'style ='display:none''添加到標籤,該怎麼辦? (雖然不能找到隱藏的輸入字段沒有什麼意義,但如果用CSS隱藏整個表單會怎麼樣?) – froderik

回答

0

你還沒有迴應你正在使用的驅動程序,但它看起來像默認rack_test驅動程序有一個錯誤,它錯誤地認爲隱藏類型輸入是可見的。水豚的主分支已經添加了一個修復程序。硒驅動程序正確地認爲它不可見 - 不知道其他驅動程序可用(水豚 - webkit,poltergeist等)

+0

我的Javascript驅動程序是Poltergeist;然而,這不是'js:true'測試,所以我不確定它是如何工作的 - 它使用Poltergeist還是默認的rack_test? – Sasgorilla

+0

@Sasgorilla如果不是在js測試中,並且您沒有更改Capybara.default_driver,那麼它使用rack_test(它不處理大多數CD)給水豚的主分支嘗試它應該解決您的問題 –