Pregunta

seré breve.

Hasta donde yo sé, la biblioteca watir proporciona dos métodos para obtener elementos html.

Casi para cada elemento (div, botón, tabla, li, etc.) watir proporciona dos métodos:

. Uno es el método 'singular' que obtiene solo un elemento específico. Por ejemplo:

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

Estos métodos solo recuperarán UN SOLO ELEMENTO. Eso está bien ...

. El segundo es el método 'plural' que recuperará TODOS los elementos de la instancia de watir

watir_instance.divs
watir_instance.links
watir_instance.buttons

Pero hasta donde yo sé, watir no proporciona un método para obtener más de un elemento con ciertas condiciones.

Por ejemplo ... Si quiero actualizar todos los enlaces con id: my_link_id, sería muy fácil hacer algo como esto:

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

Con hpricot esta tarea es muy fácil ... pero si su objetivo no es analizar, no podría encontrar un Método Watir que haga lo que quiero.

Espero que me entiendas ...

¡Saludos, Juan!

¿Fue útil?

Solución

Juan,

su script tiene varios problemas:

  • Dices que quieres actualizar todos los enlaces, pero luego usas watir_instance.divs . Debería ser watir_instance.links
  • pasa argumentos al método divs : watir_instance.divs (: id, 'my_link_id') . Debería ser solo watir_instance.divs

Tu ejemplo también es extraño:

  

quiero flashear todos los enlaces con   id: my_link_id

Hasta donde yo sé, la identificación debería ser única en la página.

Entonces, aquí hay diferentes ejemplos:

1) Actualice todos los enlaces en esta página:

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

2) Muestra todos los enlaces en esta página que tienen preguntas en URL (bono: desplaza la página para que el enlace que se muestra sea 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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top