Получить элементы по атрибутам - PullRequest
2 голосов
/ 16 сентября 2009

Я буду коротким.

Насколько я знаю, в библиотеке 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)

Эти методы будут получать только ОДИН ЭЛЕМЕНТ. Это нормально ...

. Второй - метод множественного числа, который извлекает ВСЕ элементы экземпляра watir

watir_instance.divs
watir_instance.links
watir_instance.buttons

Но, насколько мне известно, у Ватира нет способа получить более одного элемента, дающего определенные условия.

Например ... Если я хочу прошить все ссылки с id: my_link_id, было бы очень легко сделать что-то вроде этого:

watir_instance.divs(:id, 'my_link_id').each do |link|
  link.flash
end

С hpricot эта задача очень проста ... но если ваша цель не разбирать, я не смог бы найти метод Watir, который делает то, что я хочу.

Надеюсь, вы меня понимаете ...

Ура, Хуан !!

1 Ответ

2 голосов
/ 17 сентября 2009

Juan

Ваш скрипт имеет несколько проблем:

  • Вы говорите, что хотите прошить все ссылки, но затем используете watir_instance.divs. Это должно быть watir_instance.links
  • Вы передаете аргументы методу divs: watir_instance.divs(:id, 'my_link_id'). Это должно быть просто watir_instance.divs

Ваш пример тоже странный:

я хочу прошить все ссылки ID: my_link_id

Насколько я знаю, 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
...