如何检查水豚的checkbox?

我正在使用Rspec和水豚。

我如何写一个步骤来检查一个checkbox ? 我试图check值,但它无法find我的checkbox 。 我不知道该怎么做,因为我实际上有不同的ID的ID

这里是代码:

  <input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="61" name="cityID"> <input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="62" name="cityID"> <input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="63" name="cityID"> 

我发现以下工作对我来说:

 # Check find(:css, "#cityID[value='62']").set(true) # Uncheck find(:css, "#cityID[value='62']").set(false) 

最好不要使用相同的id创build多个元素,这样(不仅仅是这样),您可以轻松地选中/取消选中一个checkbox

 check 'cityID' uncheck 'cityID' 

如果不能避免具有相同id的多个元素,并且仍然需要检查具有特定值的checkbox,他可以这样做

 find(:css, "#cityID[value='62']").set(true) find(:css, "#cityID[value='62']").set(false) 

有关水豚input操作的更多信息可以在这里find

运行水豚testing时,你得到了page对象。 这可以用来检查/取消选中任何checkbox。 正如@buruzaemon已经提到:

通过名称,ID或标签文本来查找和检查checkbox。

所以,让我们假设你有一个checkbox在你的HTML像:

 <label> <input type="checkbox" value="myvalue" name="myname" id="myid"> MyLabel </label> 

你可以检查这个:

 page.check('myid') page.check('MyLabel') page.check('myname') 

取消选中就是使用page.uncheck方法。

首先,我认为你可能必须给你的表单元素赋予唯一的id

但是关于水豚和checkbox, Capybara :: Node :: Actions#check instance方法将允许您通过名称,标识或标签文本来查找和检查checkbox。

我知道这是一个比较老的问题,但是我一直在努力完成这一切,并且尝试了以上所有这些,终于为我效劳了:

 find("input[type='checkbox'][value='#{cityID.id}']").set(true) 

希望这对某人有帮助。 我正在使用水豚2.4.4。

你也可以使用:xpath而不是:css,如果你有一些问题find它。

find(:xpath,'//*[@id="example"]').set(true)

在Chrome浏览器(当然还有其他的浏览器)上,你可以“检查元素”,然后右键点击你感兴趣的元素,如果你不知道xpath是什么,那么就有'copy xpath'。

你也可以检查所有的checkbox没有被选中。

全部('input [type = checkbox]')。每个都做| checkbox | checkbox.should不be_checked结束

.set(true)对我不起作用,所以我不得不打电话.click:

find(...).click

 check find(".whenever input")[:id] 

我认为这将使水豚等待附加到该input的任何事件监听器,如果不等待,这有时是一个痛苦的屁股。如果该input没有ID,则select另一个属性(必须有一个)…