Question

Je serai bref.

Autant que je sache, la bibliothèque watir fournit deux méthodes pour obtenir des éléments HTML.

Presque pour chaque élément (div, bouton, table, li, etc.), watir propose deux méthodes:

. L'une est la méthode «singulière» qui n'obtient qu'un élément spécifique. Par exemple:

watir_instance.div(:id,'my_div_id')
watir_instance.link(:href,'my_link_href')
watir_instance.button(:class =>'my_button_class', :index => 4)

Ces méthodes ne récupéreront qu’UN SEUL ÉLÉMENT. C'est ok ...

. La seconde est la méthode 'plurielle' qui récupérera TOUS les éléments de l'instance watir

watir_instance.divs
watir_instance.links
watir_instance.buttons

Mais pour autant que je sache, Watir ne fournit pas de méthode pour obtenir plus d’un élément donnant certaines conditions.

Par exemple ... Si je veux flasher tous les liens avec l'id: my_link_id, il serait très facile de faire quelque chose comme ceci:

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

Avec hpricot, cette tâche est très facile ... mais si votre but n'est pas d'analyser, je ne pourrais pas trouver une méthode Watir qui fasse ce que je veux.

J'espère que vous pourrez me comprendre ...

Cordialement, Juan !!

Était-ce utile?

La solution

Juan,

votre script a plusieurs problèmes:

  • Vous dites que vous voulez flasher tous les liens, mais vous utilisez ensuite watir_instance.divs . Ce devrait être watir_instance.links
  • vous passez les arguments à la méthode divs : watir_instance.divs (: id, 'mon_lien_id') . Ce devrait être juste watir_instance.divs

Votre exemple est également étrange:

  

je veux flasher tous les liens avec   id: mon_lien_lien

Autant que je sache, l'identifiant doit être unique sur la page.

Alors, voici différents exemples:

1) Flash tous les liens sur cette page:

require "watir"
b = Watir::IE.start "http://stackoverflow.com/questions/1434697"
b.links.each do |link|
  link.flash
end

2) Flash sur tous les liens de cette page qui ont questions dans l'URL (bonus: faites défiler la page pour que le lien clignotant soit visible):

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top