ruby-on-rails - 选择:Capybara::Ambiguous:模糊匹配,找到 2 个匹配可见选项的元素

标签 ruby-on-rails selenium-webdriver rspec capybara

我正在尝试从列表中选择一个国家。确实有 2 个项目具有相同的名称。

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

最佳答案

与 Capybara 一样,有多种方法可以做你想做的事。你应该可以通过手动找到你想要的选项然后调用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

关于ruby-on-rails - 选择:Capybara::Ambiguous:模糊匹配,找到 2 个匹配可见选项的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54227347/

相关文章:

ruby-on-rails - 将 HashMap 作为对象的属性进行访问

java - Chrome 驱动程序 : Custom Chrome Executable Path

python - Selenium Chrome Web 驱动程序在网页上执行 JS 脚本不一致

ruby - 之前微调rspec

ruby - Cucumber/Capybara - 使用具有 "Page Object"模式的 RSpec 匹配器

ruby-on-rails - Rails 中的 Gemfile 依赖项

ruby-on-rails - 保存搜索词 rails thinkingsphinx

ruby-on-rails - 之前的 Rspec(:each) works but before(:all) does not

特定于 Controller 的 css 文件

java - POPUP 窗口关闭后面临的问题,父窗口元素无法单击