Sou novo no mundo Watir, tendo usadowebdriver e geb em uma empresa anterior. Quero saber se o Watir oferece algum método que seja análogo ao método get_elements do webdriver. Veja abaixo um exemplo.
Imagine que o seguinte html exista em uma página maior
<div class="someClass">someText</div>
<div class="someClass">someMoreText</div>
<div class="someClass">evenMoreText</div>
Eu quero fazer alguma afirmação contra cada um dos divs, localizando todos os elementos da classe fornecida e iterando através deles. Usando o webdriver, eu poderia fazer assim:
elements = driver.get_elements(:css, ".someClass")
elements.each do |element|
//some assert on element
end
Watir fornece uma construção equivalente? Não consigo encontrar nada útil na documentação do Watir.
Respostas:
2 para resposta № 1Você pode fazer:
elements = driver.elements(:css => ".someClass")
Ou, se você souber que todos são divs, faça:
elements = driver.divs(:css => ".someClass")
Ambos os métodos retornariam uma coleção de elementos que correspondem aos seus critérios. No primeiro caso, ele corresponderia a qualquer tipo de tag, enquanto que no segundo caso os resultados seriam limitados a divs.
Em seguida, com qualquer um dos itens acima, você pode iterar da mesma maneira:
elements.each do |element|
//some assert on element
end
2 para resposta № 2
Ao invés de usar :css
localizador eu recomendo que você use :class
localizador, pois geralmente é mais rápido e torna seus testes mais legíveis:
elements = driver.divs(:class => "someClass")
Além disso, não se esqueça :id
, :name
, :text
e outros.