Я пытаюсь выбрать элемент из раскрывающегося меню с помощью Capybara (2.1.0).
Я хочу выбрать по номеру (то есть выбрать второй, третий и т. Д. Вариант).
Я гуглил как сумасшедший, пробовал разные вещи, но безуспешно.
Я смог выбрать его, используя значение:
find("option[value='4c430d62-f1ba-474f-8e8a-4452c55ea0a8']").click
Но я не хочу использовать этот метод b / c, значение - это то, что изменится, и это сделает мой тест хрупким.
HTML для раскрывающегося списка:
<td class="value">
<select name="organizationSelect" id="organizationSelect" class="required">
<option value="NULL">Choose...</option>
<option value="4c430d62-f1ba-474f-8e8a-4452c55ea0a8"> Institution1</option>
<option value="e1a4efa7-352d-410a-957e-35c8a3b92944"> Institution / test</option>
</select>
</td>
Я тоже пробовал это:
option = find(:xpath, "//*[@id='organizationSelect']/option[2]").text
select(option, :from => organizationSelect)
Но это приводит к этой ошибке:
Ambiguous match, found 2 elements matching option "Institution" (Capybara::Ambiguous)
Итак, как я могу выбрать первый, второй, третий и т. Д. Вариант из раскрывающегося списка (используя Capybara)?
select('option_name', from: 'select_box')
. Где могут быть значения: id, name, связанный элемент метки. Вы можете узнать больше о вариантах Capybara и DSL здесь .У меня почему-то не получилось. Так что пришлось использовать что-то еще.
работал у меня.
источник
form
, это такfrom
. Вот документация по selectдругой вариант - добавить такой метод
источник
find("select[name='organization_search[role]']").find(:option, text: :Staff).select_option
find(:css, "#search_field").find(:option, "Opp Last Name").select_option
, который является отображаемым текстом параметра, у меня работал, а значение параметра - нет.К сожалению, самый популярный ответ у меня не сработал. Пришлось добавить
.select_option
в конец заявленияselect("option_name_here", from: "organizationSelect").select_option
без
select_option
, выбор не производилсяисточник
.select_option
, еслиselect
метод возвращает логическое значение?Чтобы добавить еще один ответ в кучу (потому что, очевидно, есть так много способов сделать это в зависимости от вашей настройки) - я сделал это, выбрав буквальный
option
элемент и щелкнув егоНе очень красиво, но работает: /
источник
ни один из ответов не работал у меня в 2017 году с капибарой 2.7. Я получил "ArgumentError: неправильное количество аргументов (дано 2, ожидается 0)"
Но это произошло:
источник
Это не прямой ответ, но вы можете (если позволяет ваш сервер):
1) Создайте модель своей организации; Дополнительно: будет легче заполнить ваш HTML.
2) Создайте фабрику (FactoryGirl) для своей модели;
3) Создайте список (create_list) с фабрикой;
4) «выбрать» (образец) организацию из списка с:
источник
Вот самый краткий способ, который я нашел (с использованием capybara 3.3.0 и драйвера хрома):
выберет второй вариант. При необходимости увеличьте индекс.
источник
В Capybara вы можете использовать только find с xpath
и метод нажмите
источник