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 !!

È stato utile?

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 essere watir_instance.links
  • passi argomenti al metodo divs : watir_instance.divs (: id, 'my_link_id') . Dovrebbe essere solo watir_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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top