Get Elemente von Attributen
-
07-07-2019 - |
Frage
ich werde kurz sein.
Soweit ich weiß watir Bibliothek bietet zwei Methoden für HTML-Elemente zu bekommen.
Fast für jedes Element (div, Knopf, Tisch, li, usw.) Watir zwei Methoden bestimmt:
. Eine davon ist die ‚singulären‘ Methode, die nur ein bestimmtes Element erhält. Zum Beispiel:
watir_instance.div(:id,'my_div_id')
watir_instance.link(:href,'my_link_href')
watir_instance.button(:class =>'my_button_class', :index => 4)
Diese Methoden werden nur ein einziges Element abrufen. Das ist ok ...
. Das zweite ist das ‚Plural‘ Methode, die alle Elemente des Watir Instanz abruft
watir_instance.divs
watir_instance.links
watir_instance.buttons
Aber soweit ich weiß, watir keine Methode liefert mehr als ein erhalten Element gibt bestimmte Bedingungen erfüllen.
Zum Beispiel ... Wenn ich will alle Verbindungen mit der ID blinken: my_link_id wäre es sehr einfach, so etwas zu tun:
watir_instance.divs(:id, 'my_link_id').each do |link|
link.flash
end
Mit hpricot dieser Aufgabe ist sehr einfach ... aber wenn Ihr Ziel ist nicht der Fall zu analysieren ich keine Watir Methode gefunden, das tut, was ich will.
Ich hoffe, Sie können mich verstehen ...
Cheers, Juan !!
Lösung
Juan,
Ihr Skript hat mehrere Probleme:
- Sie sagen, Sie alle Links blinken wollen, aber dann verwenden Sie
watir_instance.divs
. Es solltewatir_instance.links
werden
- Sie übergeben Argumente
divs
Methode:watir_instance.divs(:id, 'my_link_id')
. Es sollte nurwatir_instance.divs
sein
Ihr Beispiel ist auch seltsam:
ich will alle Links blinken mit id: my_link_id
Soweit ich weiß, id sollte auf der Seite eindeutig sein.
So, hier sind verschiedene Beispiele:
1) Flash-alle Links auf dieser Seite:
require "watir"
b = Watir::IE.start "http://stackoverflow.com/questions/1434697"
b.links.each do |link|
link.flash
end
2) Blitz alle Links auf dieser Seite, die in URL (Bonus questions
hat: blättern die Seite, so dass die Verbindung, die geflasht sichtbar ist):
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