水豚禁用复选框

Sig*_*Sig 2 rspec capybara

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

我尝试了几种选择,但似乎没有任何效果。最后一次尝试是

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

一如既往,谢谢。

Tho*_*ole 6

如文档所述 - 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)
Run Code Online (Sandbox Code Playgroud)

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

expect(page).to have_field(type: 'checkbox', with: 'agreement', disabled: true)
Run Code Online (Sandbox Code Playgroud)

如果您想使用 CSS 选择器来执行此操作,那么您可以将:disabledCSS3 伪选择器与have_css匹配器一起使用

expect(page).to have_css("input[type='checkbox'][value='agreement']:disabled")
Run Code Online (Sandbox Code Playgroud)