【问题标题】:How to check whether the check box is checked or not capybara Rspec如何检查复选框是否被选中 水豚Rspec
【发布时间】:2017-01-14 07:32:05
【问题描述】:

检查

<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>

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

【问题讨论】:

    标签: html rspec capybara


    【解决方案1】:

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

    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

    【讨论】:

    • 我只想检查该文件是否被检查
    • @jerrytom 然后checked?has_field? 风格就是你想要的
    【解决方案2】:

    'expect'语法:

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

    【讨论】:

    • 注意:此解决方案不会等到该字段真正被检查。
    【解决方案3】:

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

    所以这里的第一种方法是你可以分配你找到的元素,然后使用element.checked? 来获取复选框的状态,无论是选中还是未选中。这将返回 truefalse

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

    或者,第二种方式,我觉得这是更好的方式,并且消耗更少的代码行。

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

    【讨论】:

    • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation would greatly improve its long-term value 通过展示为什么这是一个很好的解决问题的方法,并将使其对未来有其他类似问题的读者更有用。请edit您的回答添加一些解释,包括您所做的假设。
    • 感谢您展示写作答案的艺术,以帮助他人更好地学习这个概念。
    【解决方案4】:
    <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
    

    【讨论】:

    • 请检查以下答案,这可能会告诉您用于返回值的正确代码
    • 注意:此解决方案不会等到该字段被真正检查。检查这个答案:stackoverflow.com/a/41648136/364590
    猜你喜欢
    • 2012-01-08
    • 2019-01-12
    • 2016-05-19
    • 2021-07-16
    相关资源
    最近更新 更多