【问题标题】:How do I find the first checkbox in Capybara?如何在 Capybara 中找到第一个复选框?
【发布时间】:2019-05-21 08:30:43
【问题描述】:

我想使用 capybara dsl 查找复选框的第一个实例。有人知道怎么做吗?

我想也许会是这样,但它不起作用:

find('input:first', :type => 'checkbox')

【问题讨论】:

    标签: cucumber capybara


    【解决方案1】:

    假设 Capybara.default_selector 设置为 CSS 然后:

    find("input[type='checkbox']")
    

    如果您使用的是 XPath,情况会有所不同。

    更新(2013 年 6 月):正如@tmg 指出的那样,Capybara 2 的行为发生了变化。

    【讨论】:

    • 这会找到第一个复选框吗?
    • 是的。或者:all("input[type='checkbox']").first
    • 在 Capybara 2 中,如果多个元素匹配, find 将引发 Capybara::Ambiguous。而是使用:first("input[type='checkbox']") 或找到一个更独特的定位器来与 find 一起使用。见:first
    【解决方案2】:

    只是指出tmg找到first复选框的正确方法

    first("input[type='checkbox']")
    

    如果您想找到 第 n 个 复选框(例如第 25 个):

    find(:xpath, "(//input[@type='checkbox'])[25]")
    

    但通常最好使用 within 来缩小搜索范围

    within 'div.div_class' do
      find("input[type='checkbox']")
    end
    

    【讨论】:

      【解决方案3】:

      找到第一个复选框的最少flaky 方法可能是:

      find("input[type='checkbox']", match: :first)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-18
        • 2023-03-21
        • 1970-01-01
        • 1970-01-01
        • 2016-02-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多