/ / Retorna elementos que correspondem como uma matriz - ruby, testing, webdriver, watir

Elementos de retorno que correspondem a um array - ruby, teste, webdriver, watir

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 № 1

Você 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.