【问题标题】:Check if checkbox is unchecked检查复选框是否未选中
【发布时间】:2018-02-09 06:51:07
【问题描述】:

我正在尝试编写一个测试来检查复选框是否被选中,如果没有选中,我将使用什么方法来检查它。

我已经写了一个检查复选框的代码,

driver.find_element(:id, 'id_of_the_element').click();

但我仍然想检查它是否也针对其他测试用例进行了检查

蒂亚!

【问题讨论】:

  • idk 关于你正在使用的东西,但在 Android 中,该函数称为 isChecked(),也许检查你的文档
  • @SaikCaskey,我正在使用 ruby​​ 和 capybara 编写测试用例。

标签: android ruby rspec capybara appium


【解决方案1】:
if((cb.isChecked())
{
  //Checkbox is true.
}
else
{
  //Checkbox is false.
}

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,但它没有解释为什么或如何回答这个问题。请包括对您的代码的解释,因为这确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因
【解决方案2】:

我认为您期待 Ruby 中的代码 sn-p,因为为 ruby​​ 编写了 sn-p。如果您想选中未选中的复选框,则此代码有效。如果您需要在其中进行更多更改,您可以进行修改。

    element=driver.find_element(:id, 'id_of_the_element');
    if(element.attribute("checked")=="false")
    {
        element.click();
    }

【讨论】:

    【解决方案3】:

    要检查复选框是否被选中,您必须像这样调用isChecked() 方法:

    if(checkbox.isChecked()) {
        // The checkbox is checked
    } else {
        // The checkbox isn't checked
    }
    

    在设置复选框的状态时,您必须调用作为参数传入的setChecked() 方法true 来选中它,并调用false 来取消选中它。

    【讨论】:

      【解决方案4】:

      您似乎在使用 Capybara 和 appium,但由于某种原因,您调用的是驱动程序特定的方法,而不是使用普通的 Capybara API .而不是driver.find_element(:id, 'id_of_the_element').click();,您应该只调用其中一个

      page.find(:id, 'id_of_the_element').click() # use the id selector
      page.find('#id_of_the_element').click() # use default CSS with an id selector
      

      查找并单击 id 为“id_of_the_element”的元素。在处理特定元素类型时,还有其他方法可用,因此对于复选框,我们有 checkuncheck - http://www.rubydoc.info/gems/capybara/Capybara/Node/Actions#check-instance_method - 将选中或取消选中复选框,同时检查它是否已选中/未选中。所以

      page.check('id_of_the_element)
      

      将确保

      或者如果你想断言一个复选框被选中,下面的任何一个都可以做到 - http://www.rubydoc.info/gems/capybara/Capybara/RSpecMatchers

      expect(page).to have_selector(:checkbox, 'id_of_the_element', checked: true)
      expect(page).to have_field('id_of_the_element', type: 'checkbox', checked: true)
      expect(page).to have_checked_field('id_of_the_element')
      

      【讨论】:

      • 当我尝试使用 page.find 方法时,它列出了该页面上所有可用的元素 ID,但无法找到该元素。但 page.find_element 以某种方式工作。我想我必须阅读你给我的所有文件。谢谢!
      • @Aurb 那么听起来您实际上并没有将 Capybara 与 Appium 一起使用,应该从问题中删除 Capybara 标记。
      【解决方案5】:

      我觉得简单多了……(用python会这样)

      def isChecked(self, webElement):
          if webElement.get_attribute("checked") == 'true':
              return True
          else:
              return False
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-28
        相关资源
        最近更新 更多