如何检查是否选中复选框capybara Rspec

jer*_*tom 11 html rspec capybara

校验

<div class="checkbox">
    <input id="yes_1212" class="check_uncheck" type="checkbox" value="true" name="yes" checked="checked">
    <label></label>
    </div>
Run Code Online (Sandbox Code Playgroud)

取消选中

 <div class="checkbox ">
    <input id="allow__100" class="check_uncheck" type="checkbox" value="false" name="Allow">
    <label></label>
    </div>
Run Code Online (Sandbox Code Playgroud)

如何检查复选框是否被选中

Tho*_*ole 15

有多种方法取决于你正在尝试做什么 - 如果你已经找到了元素,只是想知道它是否被检查你可以做类似的事情

element = find('#yes_1212')
...
element.checked?
Run Code Online (Sandbox Code Playgroud)

如果您试图断言该框位于页面上并且已选中/取消选中,则可以执行此操作

expect(page).to have_field('yes_1212', checked: true) # checked: false or unchecked: true for not checked
Run Code Online (Sandbox Code Playgroud)

要么

expect(page).to have_checked_field('yes_1212')  # or have_unchecked_field
Run Code Online (Sandbox Code Playgroud)

如果你想要一个布尔响应,并且还没有对该元素的引用

page.has_field?('allow__100', unchecked: true)
page.has_unchecked_field?('allow_100')
Run Code Online (Sandbox Code Playgroud)

在所有情况下,如果输入元素实际上因样式原因而不可见,则可以通过 visible: false


小智 5

'期望'语法:

expect(page.find("input#yes_1212")).to be_checked

expect(page.find("input#yes_1212")).not_to be_checked
Run Code Online (Sandbox Code Playgroud)


jer*_*tom 1

<input id="allow__100" class="check_uncheck" type="checkbox" value="false" name="Allow">    
Run Code Online (Sandbox Code Playgroud)

对于输入类型复选框

 page.find(:css,
                      "input#allow__100", visible: false
                    ).should_not be_checked
Run Code Online (Sandbox Code Playgroud)