Получение элементов По Атрибутам
-
07-07-2019 - |
Вопрос
я буду краток.
Насколько я знаю, библиотека watir предоставляет два метода для получения html-элементов.
Почти для каждого элемента (div, button, table, li и т.д.) watir предоставляет два метода:
.Одним из них является "сингулярный" метод, который получает только один определенный элемент.Например:
watir_instance.div(:id,'my_div_id')
watir_instance.link(:href,'my_link_href')
watir_instance.button(:class =>'my_button_class', :index => 4)
Эти методы будут извлекать только ОДИН ЭЛЕМЕНТ.Все в порядке...
.Второй - это метод 'plural', который извлекает ВСЕ элементы экземпляра watir
watir_instance.divs
watir_instance.links
watir_instance.buttons
Но, насколько я знаю, watir не предоставляет метода для получения более одного элемента, задающего определенные условия.
Например...Если я хочу прошить все ссылки с идентификатором: my_link_id, было бы очень легко сделать что-то вроде этого:
watir_instance.divs(:id, 'my_link_id').each do |link|
link.flash
end
С hpricot эта задача очень проста...но если ваша цель не в том, чтобы анализировать, я не смог найти метод Watir, который делает то, что я хочу.
Надеюсь, вы сможете меня понять...
Твое здоровье, Хуан!!
Решение
Хуан,
у вашего скрипта есть несколько проблем:
- Вы говорите, что хотите прошить все ссылки, но затем вы используете
watir_instance.divs
.Это должно бытьwatir_instance.links
- вы передаете аргументы в
divs
способ:watir_instance.divs(:id, 'my_link_id')
.Это должно быть простоwatir_instance.divs
Ваш пример тоже странный:
я хочу прошить все ссылки с помощью id: my_link_id
Насколько я знаю, идентификатор должен быть уникальным на странице.
Итак, вот разные примеры:
1) Прошейте все ссылки на этой странице:
require "watir"
b = Watir::IE.start "http://stackoverflow.com/questions/1434697"
b.links.each do |link|
link.flash
end
2) Прошейте все ссылки на этой странице, которые имеют questions
в URL (бонус:прокрутите страницу, чтобы была видна отображаемая ссылка):
require "watir"
b = Watir::IE.start "http://stackoverflow.com/questions/1434697"
b.links.each do |link|
if link.href =~ /questions/
link.document.scrollintoview
link.flash
end
end