2016-03-03 50 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)给水豚的主分支尝试它应该解决您的问题 –