Вопрос

я буду краток.

Насколько я знаю, библиотека 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top