我正在使用 Rspec 和 Capybara。
如何编写步骤来检查
checkbox
?我已按值尝试过 check
,但它找不到我的 checkbox
。我不知道该怎么做,因为我实际上有相同的 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)
page
对象。您可以使用它来选中/取消选中任何复选框。正如@buruzaemon 已经提到的:
按名称、ID 或标签文本查找并选中复选框。因此,假设您的 html 中有一个复选框,例如:
<label>
<input type="checkbox" value="myvalue" name="myname" id="myid">
MyLabel
</label>
您可以通过以下方式检查:
page.check('myid')
page.check('MyLabel')
page.check('myname')
取消勾选是一样的,只需使用
page.uncheck
方法即可。
capybara 3.0.3
开始,您就可以这样做
check 'Option 3'
find("input[type='checkbox'][value='#{cityID.id}']").set(true)
希望这对某人有帮助。我正在使用水豚2.4.4。
check('Option 3', allow_label_click: true)
find(:xpath , '//*[@id="example"]').set(true)
在 Chrome(当然还有其他浏览器)上,您可以“检查元素”,然后右键单击您感兴趣的元素,如果您不知道 xpath 是什么,那么现在您知道了,会出现“复制 xpath”。
all('input[type=checkbox]').each 做 |checkbox| 复选框.should_not be_checked 结束
find(...).click
find_by_id("cityID").set(true)
在 Rails 7 上测试。工作正常。
check 'name_of_checkbox'
我认为这会让水豚等待附加到该输入的任何事件侦听器,如果它不等待,有时会很痛苦...... 如果该输入没有 ID,请选择另一个属性(必须有一个)...
如果它是页面上唯一的复选框,则只需拥有
就足够了check