2012-07-18 65 views
3

使用水豚我无法为我的生活选择一个复选框在我的表单上。用水豚检查复选框

在我的要求规范我已经试过:

check("First Name") 
page.check("First Name") 
page.check("pickem_option_ids_10") 
find(:css, "#pickem_option_ids_11[value='11']").set(true) 
find(:css, "#pickem_option_ids_11").set(true) 

片段从我的形式:

<div class="control-group check_boxes optional"> 
    <label class="check_boxes optional control-label">Options:</label> 
    <div class="controls"> 
    <label class="checkbox"> 
    <input class="check_boxes optional" id="pickem_option_ids_10" name="pickem[option_ids][]" type="checkbox" value="10" />First Name 
    </label> 
    <label class="checkbox"> 
    <input class="check_boxes optional" id="pickem_option_ids_11" name="pickem[option_ids][]" type="checkbox" value="11" />Middle Name 
    </label> 
    </div> 
</div> 

我得到了一些发现,从this SO thread()的想法。

我在其他规范中取得了一些成功,其中有一个标签为Active的复选框,我只是说check("Active")

+0

这个解决方案和我一起 http://stackoverflow.com/questions/8297624/how-to-check-a-checkbox-in-capybara – 2013-03-01 14:56:42

+0

或者更确切地说是:http://stackoverflow.com/a/14813623/1612469 – Aleks 2015-05-25 12:48:41

回答

2

水豚找不到复选框"First Name"因为你的html是错误的。你的HTML应该像

<label class="checkbox" for="pickem_option_ids_10">First Name</label> 
<input class="check_boxes optional" id="pickem_option_ids_10" name="pickem[option_ids][]" type="checkbox" value="10" /> 

在视图代码

= label_tag "pickem_option_ids_10", "First Name" 
= check_box_tag "pickem_option_ids_10", 10 

然后check("First Name")应该工作。

否则,您可以find("#pickem_option_ids_10").check

+0

好点。我使用来自simple_form的关联帮助器,这是标记来自哪里。不幸的是,我不知道如何实现你的建议。但是现在你提到它了,生成的标记有点奇怪。 – 2012-07-19 01:51:41

+0

对不起,从未使用过simple_form。 'find(“#pickem_option_ids_10”)。check' work? – 2012-07-19 05:57:01

+0

没有,似乎也没有工作。 – 2012-07-19 11:11:43

9

今天有同样的问题,我环顾四周,这似乎工作:

find(:xpath, "//input[@value='10']").set(true) 
当然,你可以用任何东西代替“10”您要

- 只是检查HTML并使用您的价值。

希望有所帮助。

+7

方便的提示是使用Chrome Web Inspector查找元素并右键单击并选择“复制XPath” – edwardsmatt 2013-09-08 22:27:58