水豚的禁用复选框

Disabled checkbox with Capybara

如何使用 Capybara 验证复选框是否已禁用?

我尝试了几个选项,但似乎没有任何效果。上次尝试是

expect(page).to have_field("input[type='checkbox'][value='agreement']", disabled: true)

一如既往,谢谢。

如文档所述 - http://www.rubydoc.info/gems/capybara/Capybara/Node/Matchers#has_field%3F-instance_method - have_field 匹配器 获取要检查的字段的标签、名称或 ID ,它不需要 CSS选择器。因此,您要么需要将预期元素的名称、ID 或相关标签文本传递给匹配器。对您在选择器中检查的所有其他内容执行此操作类似于。

expect(page).to have_field('id_of_checkbox', type: 'checkbox', with: 'agreement', disabled: true)

如果您使用的是最近的水豚,您也可以跳过 id/name/label 文本,前提是其他选项会限制为唯一元素。

expect(page).to have_field(type: 'checkbox', with: 'agreement', disabled: true)

如果你想用 CSS 选择器代替,那么你可以使用 :disabled CSS3 伪选择器和 have_css 匹配器

expect(page).to have_css("input[type='checkbox'][value='agreement']:disabled")

如果有人在检查隐藏复选框的禁用状态时仍在寻找类似的解决方案,您可以使用:

expect(page).to have_field('id_of_element', type: 'checkbox', disabled: false, visible: :hidden)

visible: :hidden 会告诉水豚也寻找不可见的字段