无法找到Capybara的复选框

时间:2016-03-08 17:42:42

标签: selenium-webdriver checkbox capybara visibility

无法找到Capybara的复选框。

这是HTML:

<div class='check-group'>
 <div class='checkbox'>
   <input type="checkbox" name="accepts_fcra" id="accepts_fcra" value="1" />
   <label for="accepts_fcra"><span>Some text <a title="FCRA" target="_blank" href="https://www.google.com/fcra">FCRA</a> some text.</span></label>
 </div>
</div>

现在我想选中带有ID&#34; accepts_fcra&#34;的复选框。

我已经尝试了很多东西而且几乎都返回了相同的东西:&#34;无法找到(用于查找复选框的方法)&#34;

一些尝试:

check("#accepts_fcra")
Capybara::ElementNotFound: Unable to find checkbox "#accepts_fcra"

find("#accepts_fcra").set true
Capybara::ElementNotFound: Unable to find css "#accepts_fcra"

within("div.checkbox") do
  find(:xpath, "//input[@id='accepts_fcra']")
end
Capybara::ElementNotFound: Unable to find xpath "//input[@id='accepts_fcra']"

但是复选框上面的2个类,&#34; .check-group&#34;和&#34; .checkbox&#34;找到了,只找不到复选框。想法?

2 个答案:

答案 0 :(得分:3)

想出来,试过这个:

find("accepts_fcra", :visible => false).click

它有效,元素是'隐形的',所以只需将其与查找一起传递并点击即可使用。

答案 1 :(得分:0)

visible: false解决方案不适用于我。

这是因为复选框被隐藏了

 input[type="checkbox"]{
    position: absolute;
    opacity: 0;
    cursor: pointer;
    height: 0;
    width: 0;
    opacity:0;
}

,而改用时髦的复选标记样式。

但是,单击标签对我有用

例如/

page.find(:xpath, "//label[@for='accepts_fcra']").click