Проблема заключается в том, что вы используете select
метод Watir-Classic с параметром, который соответствует как текст опциона, а также значение другого опциона.
Если вы посмотрите на code for the Watir::SelectList#select
method:
def select(item)
matching_options = []
perform_action do
matching_options = matching_items_in_select_list(:text, item) +
matching_items_in_select_list(:label, item) +
matching_items_in_select_list(:value, item)
raise NoValueFoundException, "No option with :text, :label or :value of #{item.inspect} in this select element" if matching_options.empty?
matching_options.each(&:select)
end
first_present_option_value matching_options, :text
end
Вы можете видеть, что:
- Он получает список подходящих вариантов на основе текста, метки и значения и
- Тогда для каждого подходящего варианта Watir-Classic выбирает его.
Для вашего конкретного примера, это означает, что
- 2 варианта соответствует вход "2":
<option value="2">1</option>
матчи с момента его value
"2"
<option value="3">2</option>
матчей с момента его text
является "2"
- Watir-Classic является выбор каждого из этих вариантов, в данном конкретном порядке, поэтому вы видите выпадающий переключатель в положение «1», а затем «2»
Учитывая то, как метод написано и как ваш выбор список написан, вы не можете использовать метод select
. Хотя лучшим вариантом является переход на Watir (ранее Watir-Webdriver), в Watir-Classic есть обходные пути.
Удалить неоднозначность, специально выбирая вариант, основанный на только value
атрибута:
id = "[email protected]|[email protected]@id"
b.select_list(:id, id).select_value "3"
#=> will select <option value="3">2</option>
Если вы хотите придерживаться выбора по тексту, непосредственно найти/выбрать опцию элемент:
id = "[email protected]|[email protected]@id"
b.select_list(:id, id).option(:text, "2").select
#=> will select <option value="3">2</option>
Это очень интересная вещь, которую вы объяснили. – Gopal
Будут ли они когда-нибудь пытаться решить эту проблему в Watir-classic? Или, поскольку он устарел, они даже не коснутся его? – Gopal
@Gopal, я думаю, это будет зависеть от спроса и причин для пользователей, которые все еще используют Watir-Classic. Я, вероятно, последний человек в команде Watir, которая использует Watir-Classic, поэтому последняя, которая заинтересована в поддержании проекта. Если вы не возражаете, я спрашиваю, каковы ваши причины для использования Watir-Classic над Watir-Webdriver? –