Je serai court. Autant que je sache, la bibliothèque de watir fournit deux méthodes pour obtenir des éléments html.Obtenir des éléments par attributs
Presque pour chaque élément (div, bouton, table, li, etc) watir fournit deux méthodes:
. L'un est la méthode «singulière» qui n'obtient qu'un seul é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 récupèrent uniquement un élément unique. C'est ok ...
. La seconde est la méthode « plurielle » qui permet de récupérer 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 une méthode pour obtenir plus d'un élément donnant certaines conditions.
Par exemple ... Si je veux flasher tous les liens avec 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 objectif n'est pas d'analyser, je ne pouvais pas trouver une méthode Watir qui fait ce que je veux.
espère que vous pouvez me comprendre ...
Cheers, Juan !!
Merci beaucoup Zeljko! Mais je pense que je n'ai pas bien expliqué mon problème et les choses que je veux faire ... Je demandais juste si watir fournit une méthode comme divs mais accepte des parametres ... Par exemple si je devais flasher tous les liens avec class 'my_class' je mettrais quelque chose comme ceci: b = Watir :: IE.start "xxxxxxx" b.liens (: class, 'myclass'). each do | link | link.flash end Existe-t-il une méthode de ce type? Quoi qu'il en soit, si cette méthode n'existe pas, dans votre exemple j'ai vu le moyen de résoudre mon problème; an fait un si conditionnel en comparant l'attribut. – flyer88
Réponse courte: non. Une réponse un peu plus longue: autant que je sache, quand vous demandez une collection d'éléments (divs, links ...), vous les obtenez tous, il n'y a aucun moyen d'obtenir seulement quelques éléments (comme des liens avec une classe spécifique). Heureusement, ma réponse résout ce problème. –