如何使用Capybara单击嵌套复选框

时间:2014-09-17 16:52:41

标签: ruby selenium-webdriver capybara

我想检查id = user_accepts_terms的第一个复选框。这是HTML:

<div class="check-group">

<div class="checkbox">
<input type="hidden" value="0" name="user[accepts_terms]">
</input>
<input id="user_accepts_terms" type="checkbox" value="1" name="user[accepts_terms]">
</input>
<label class="" for="user_accepts_terms">
</label>
</div>

<div class="checkbox">
<input type="hidden" value="0" name="user[subscribed]">
</input>
<input id="user_subscribed" type="checkbox" value="1" name="user[subscribed]">
</input>
<label class="m-focus" for="user_subscribed">
</label>
</div>

我想检查id = user_accepts_terms的第一个复选框。试过这件事,但没有运气:

find('.check-group').all('.checkbox')[0].find("#user_accepts_terms").set(true)

.find("#user_accepts_terms").set(true)不起作用,它说无法找到css。

这篇文章如下:

2.1.0 :097 > find('.check-group').all('.checkbox')[0].text
 => "I accept the terms of use and privacy policy" 

1 个答案:

答案 0 :(得分:0)

.all('.checkbox')[0]部分已经找到了您想要的复选框,.find("#user_accepts_terms")部分正在尝试在其下方找到另一个不存在的元素。如果语法正确(我不熟悉它),以下任何一个都应该可以工作

find('.check-group').find("#user_accepts_terms").set(true)
find('.check-group').all('.checkbox')[0].set(true)