Joh*_*Dow 123 ruby testing rspec ruby-on-rails capybara
我正在使用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">
Run Code Online (Sandbox Code Playgroud)
Jon*_*n M 153
我发现以下内容对我有用:
# Check
find(:css, "#cityID[value='62']").set(true)
# Uncheck
find(:css, "#cityID[value='62']").set(false)
Run Code Online (Sandbox Code Playgroud)
ins*_*ero 128
最好不要创建具有相同ID的多个元素,这样(并且不仅仅是为了)您可以轻松地选中/取消选中优雅的复选框
check 'cityID'
uncheck 'cityID'
Run Code Online (Sandbox Code Playgroud)
如果一个人无法避免具有相同ID的多个元素,并且仍需要检查具有特定值的复选框,则可以使用
find(:css, "#cityID[value='62']").set(true)
find(:css, "#cityID[value='62']").set(false)
Run Code Online (Sandbox Code Playgroud)
有关水豚输入操作的更多信息可以在这里找到
p11*_*00i 55
运行水豚测试时,你得到了这个page对象.您可以使用它来选中/取消选中任何复选框.正如@buruzaemon已经提到的:
按名称,ID或标签文本查找并选中复选框.
所以我们假设你的html中有一个复选框,如:
<label>
<input type="checkbox" value="myvalue" name="myname" id="myid">
MyLabel
</label>
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式检查:
page.check('myid')
page.check('MyLabel')
page.check('myname')
Run Code Online (Sandbox Code Playgroud)
取消选中只是使用page.uncheck方法.
bur*_*mon 26
我认为你可能必须首先给id你的表单元素赋予独特的东西.
但是对于Capybara和复选框,Capybara :: Node :: Actions#检查实例方法将允许您按名称,ID或标签文本查找和选中复选框.
我知道这是一个较老的问题,但我自己一直在研究这个问题,并且尝试了以上所有内容,这最终对我有用:
find("input[type='checkbox'][value='#{cityID.id}']").set(true)
Run Code Online (Sandbox Code Playgroud)
希望这对某人有帮助.我正在使用Capybara 2.4.4.
隐藏在标签元素后面的自定义复选框存在一些问题。需要一个allow_label_click: true.
参考这篇博文,
check 'checkbox[name]', allow_label_click: true
Run Code Online (Sandbox Code Playgroud)
对于标签中有链接的情况,例如“我同意 条款和条件”情况,上面的代码将打开页面,这不是您想要的。
改为这样做。
find(:css, "#checkbox_id", visible: false).execute_script('this.checked = true')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
85291 次 |
| 最近记录: |