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

时间:2017-01-14 07:32:05

标签: html rspec capybara

检查

<div class="checkbox">
    <input id="yes_1212" class="check_uncheck" type="checkbox" value="true" name="yes" checked="checked">
    <label></label>
    </div>

取消选中

 <div class="checkbox ">
    <input id="allow__100" class="check_uncheck" type="checkbox" value="false" name="Allow">
    <label></label>
    </div>

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

4 个答案:

答案 0 :(得分:12)

有多种方法取决于您正在尝试做什么 - 如果您已经找到该元素并且只是想知道它是否已经过检查,您可以执行类似

的操作
element = find('#yes_1212')
...
element.checked?

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

expect(page).to have_field('yes_1212', checked: true) # checked: false or unchecked: true for not checked

expect(page).to have_checked_field('yes_1212')  # or have_unchecked_field

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

page.has_field?('allow__100', unchecked: true)
page.has_unchecked_field?('allow_100')

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

答案 1 :(得分:5)

'expect'语法:

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

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

答案 2 :(得分:1)

有两种获取复选框状态的方法。 在代码中,您可以在find(locator_strategy, locator_xpath中看到locator_strategy,是您是通过:xpath还是:css搜索定位符,而第二个参数是locator_xpath,它是定位符写的用第一个参数的定义方式。

因此,这里的第一种方法是,您可以分配找到的元素,然后使用element.checked?来获取复选框的状态,无论其是否选中。这将返回 true false

def method_name
 element = find(locator strategy, locator_xpath)
 return element.checked?
end

或者,第二种方式,我认为这是一种更好的处理方式,并且消耗更少的代码行。

def method_name
 return find(locator strategy, locator_xpath).checked?
end

答案 3 :(得分:0)

<input id="allow__100" class="check_uncheck" type="checkbox" value="false" name="Allow">    

输入类型复选框

 page.find(:css,
                      "input#allow__100", visible: false
                    ).should_not be_checked