Ottieni elementi per attributi
-
07-07-2019 - |
Domanda
Sarò breve.
Per quanto ne so, la libreria watir offre due metodi per ottenere elementi html.
Quasi per ogni elemento (div, pulsante, tabella, li, ecc.) watir fornisce due metodi:
. Uno è il metodo "singolare" che ottiene solo un elemento specifico. Ad esempio:
watir_instance.div(:id,'my_div_id')
watir_instance.link(:href,'my_link_href')
watir_instance.button(:class =>'my_button_class', :index => 4)
Questi metodi recupereranno solo UN SOLO ELEMENTO. Va bene ...
. Il secondo è il metodo "plurale" che recupererà TUTTI gli elementi dell'istanza watir
watir_instance.divs
watir_instance.links
watir_instance.buttons
Ma per quanto ne so, Watir non fornisce un metodo per ottenere più di un elemento che fornisce determinate condizioni.
Ad esempio ... Se voglio mostrare tutti i collegamenti con id: my_link_id sarebbe molto facile fare qualcosa del genere:
watir_instance.divs(:id, 'my_link_id').each do |link|
link.flash
end
Con hpricot questo compito è molto semplice ... ma se il tuo obiettivo non è quello di analizzare non sono riuscito a trovare un metodo Watir che faccia quello che voglio.
Spero che tu possa capirmi ...
Saluti, Juan !!
Soluzione
Juan,
il tuo script ha diversi problemi:
- Dici di voler eseguire il flashing di tutti i link, ma poi usi
watir_instance.divs
. Dovrebbe esserewatir_instance.links
- passi argomenti al metodo
divs
:watir_instance.divs (: id, 'my_link_id')
. Dovrebbe essere solowatir_instance.divs
Anche il tuo esempio è strano:
Voglio far lampeggiare tutti i collegamenti con id: my_link_id
Per quanto ne so, l'id dovrebbe essere unico nella pagina.
Quindi, ecco alcuni esempi:
1) Flash tutti i collegamenti in questa pagina:
require "watir"
b = Watir::IE.start "http://stackoverflow.com/questions/1434697"
b.links.each do |link|
link.flash
end
2) Esegui il flashing di tutti i link di questa pagina che hanno domande
nell'URL (bonus: scorri la pagina in modo che il link che viene visualizzato sia visibile):
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