Pergunta

i será curta.

Tanto quanto eu sei Watir biblioteca fornece dois métodos para obter elementos HTML.

Quase para cada elemento (div, botão, mesa, li, etc) Watir fornece dois métodos:

. Um deles é o método 'singular', que recebe apenas um elemento específico. Por exemplo:

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

Estes métodos só irá recuperar um único elemento. Thats ok ...

. O segundo é o 'plural' método que irá recuperar todos os elementos da instância Watir

watir_instance.divs
watir_instance.links
watir_instance.buttons

Mas, tanto quanto eu sei Watir não fornece um método para obter mais de um elemento dando certas condições.

Por exemplo ... Se eu quero a piscar todos os elos id: my_link_id seria muito fácil de fazer algo como isto:

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

Com hpricot esta tarefa é muito fácil ... mas se o seu objetivo não é analisar eu não poderia encontrar um método Watir que faz o que eu quero.

Espero que possa me entender ...

Cheers, Juan !!

Foi útil?

Solução

Juan,

seu script tem vários problemas:

  • Você diz que quer a piscar todos os links, mas então você usar watir_instance.divs. Deve ser watir_instance.links
  • você passar argumentos para o método divs: watir_instance.divs(:id, 'my_link_id'). Deve ser apenas watir_instance.divs

Seu exemplo também é estranho:

i quer a piscar todos os elos id: my_link_id

Tanto quanto eu sei, id deve ser único na página.

Então, aqui estão vários exemplos:

1) piscam todos os links nessa página:

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

2) o Flash todos os links nesta página que têm questions na URL (bônus: Rolo a página para o link que é brilhou é visível):

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top