выберите: Capybara :: Ambiguous: неоднозначное соответствие, найдено 2 элемента, соответствующих видимой опции - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь выбрать страну из списка. На самом деле есть 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

1 Ответ

0 голосов
/ 17 января 2019

Как обычно с 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
...