Obtener elementos por atributos
-
07-07-2019 - |
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!
Solución
Juan,
su script tiene varios problemas:
- Dices que quieres actualizar todos los enlaces, pero luego usas
watir_instance.divs
. Debería serwatir_instance.links
- pasa argumentos al método
divs
:watir_instance.divs (: id, 'my_link_id')
. Debería ser solowatir_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