代码之家  ›  专栏  ›  技术社区  ›  Chloe

select:capybara::ambiguous:不明确匹配,找到2个与可见选项匹配的元素

  •  2
  • Chloe  · 技术社区  · 6 年前

    我正在从列表中选择一个国家。确实有两个项目同名。

    select user_info.company_country, from: 'Company country'
    

    HTML:

    <select class="" name="user[company_country]" id="user_company_country">
    <option value=""></option>
    <option value="United States of America">United States of America</option>
    <option value="Afghanistan">Afghanistan</option>
    ... 200+ countries
    <option value="United States of America">United States of America</option>
    <option value="Uruguay">Uruguay</option>
    

    错误:

     Capybara::Ambiguous:
       Ambiguous match, found 2 elements matching visible option "United States of America" within #<Capybara::Node::Element tag="select" path="/html/body/div[3]/section/div/div/div/form/div/div[8]/select">
    

    似乎没有选择第一个选项的任何选项。

    https://www.rubydoc.info/github/teamcapybara/capybara/master/Capybara/Node/Actions#select-instance_method

    1 回复  |  直到 6 年前
        1
  •  3
  •   Thomas Walpole    6 年前

    和往常一样,水豚有多种方法可以满足你的需要。您应该能够通过手动找到所需的选项,然后调用 select_option 关于它

    find('#user_company_country option[value="United States of America"]', match: :first).select_option
    

    first(:option, 'United States of America').select_option
    

    或者通过 match: :first 选择的选项(实际上还没有尝试过,但从代码中可以选择,因为选项在两个查找之间共享 select 实际执行)

    select user_info.company_country, from: 'Company country', match: :first