Capybara / Poltergeist,点击Hidden Checkbox?

时间:2016-08-01 19:31:21

标签: capybara poltergeist

我想点击一个Checkbox的HTML:

<td class="surface center">
<div class="checkbox-inline checkbox-inline--empty">
<input type="hidden" value="0" name="stuff_check">
<input id="stuff_1" class="boolean optional" type="checkbox" name="stuff_1_checked" value="1" data-item="5">
<label class="optional" for="stuff_1">Checked</label>
</div>
</td>

当运行page.find_by_id('id').trigger('click')时它确实有用,只是使用click但它抱怨Poltergeist可能会点击其他元素:

  

水豚::鬼驱:: MouseEventFailed:          在坐标[-9468.5,6]点击点击失败。 Poltergeist用CSS选择器检测到了另一个元素&#39;&#39;在这个位置。有可能   重叠您尝试与之交互的元素。如果你   不要关心重叠元素,尝试使用   node.trigger(&#39;单击&#39)。

但是我觉得这可能是因为它被设置为&#34;隐藏&#34;,所以我尝试了page.find_by_id('ID', :visible => false).click,但它给出了同样的问题。

有什么建议吗?因为我知道使用触发器。(&#39;点击&#39;)不建议。

2 个答案:

答案 0 :(得分:1)

尝试

within('.checkbox-inline checkbox-inline--empty') do
  check('#stuff_1')
end 

我真的建议使用Pry来做这件事,因为你可以省去很多痛苦,找出哪些元素在哪里。

答案 1 :(得分:1)

无法正确点击隐藏元素,因为用户无法点击屏幕上没有显示的元素。
您的示例令人困惑,因为隐藏元素与复选框元素没有相同的name属性,这是我在这种设置中通常所期望的。假设你真正想要做的就是检查&#34; stuff_1&#34;复选框(通过CSS隐藏)然后你应该做你的应用程序用户必须做的事情 - 点击标签。

page.find('label[for="stuff1"]').click