检查
<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>
如何检查复选框是否已选中
答案 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