如何在水豚中选中复选框?

问题描述 投票:0回答:15

我正在使用 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">
ruby-on-rails ruby testing rspec capybara
15个回答
159
投票

我发现以下内容对我有用:

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

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

150
投票

最好不要创建具有相同 id 的多个元素,这样(不仅如此)您可以使用优雅的轻松地选中/取消选中 checkbox

check 'cityID'
uncheck 'cityID'

如果无法避免具有相同 id 的多个元素,并且仍然需要选中具有特定值的复选框,他可以使用

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

有关

capybara 输入操作的更多信息可以在此处找到


60
投票
运行水豚测试时,你得到了

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

方法即可。


26
投票
我认为您可能必须首先

为表单元素提供独特的id

但是对于 Capybara 和复选框,

Capybara::Node::Actions#check 实例方法

将允许您通过名称、id 或标签文本查找并检查复选框。


14
投票
capybara 3.0.3

开始,您就可以这样做


check 'Option 3'



9
投票
allow_label_click: true

参考这篇

博客文章

check 'checkbox[name]', allow_label_click: true

如果您的标签中有“我同意
条款和条件

”之类的链接,上面的代码将打开该页面,这不是您想要的。 改为这样做。

find(:css, "#checkbox_id", visible: false).execute_script('this.checked = true')



7
投票

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

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


7
投票

check('Option 3', allow_label_click: true)



1
投票

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

在 Chrome(当然还有其他浏览器)上,您可以“检查元素”,然后右键单击您感兴趣的元素,如果您不知道 xpath 是什么,那么现在您知道了,会出现“复制 xpath”。


1
投票

all('input[type=checkbox]').each 做 |checkbox| 复选框.should_not be_checked 结束


1
投票

find(...).click

    


1
投票

find_by_id("cityID").set(true)

在 Rails 7 上测试。工作正常。


1
投票

check 'name_of_checkbox'



0
投票
我认为这会让水豚等待附加到该输入的任何事件侦听器,如果它不等待,有时会很痛苦......
如果该输入没有 ID,请选择另一个属性(必须有一个)... 


0
投票

如果它是页面上唯一的复选框,则只需拥有

就足够了

check

© www.soinside.com 2019 - 2024. All rights reserved.