Estou usando o findElements do Selenium WebDriver pra fazer uma buscas em uma página.
Quando faço a busca simples, tudo funciona corretamente:
Ex:
List webElements = driver.findElements(By.xpath("//* [contains(text(),‘Planned’) and @class=‘HistoryColumn0’]//following::td[1]"));
System.out.println("Story: "+ story.getId() + " Tamando da Lista: "+ webElements.size());
Tela
Story: 1626436 Tamando da Lista: 1 //Está correto. Só resultado da busca foi 1
O problema está quando eu preciso usar uma estrutura de repetição. Fica assim:
Ex:
for (Story story : stories) {
List webElements = driver.findElements(By.xpath("//* [contains(text(),‘Planned’) and @class=‘HistoryColumn0’]//following::td[1]"));
System.out.println("Story: "+ story.getId() + " Tamando da Lista: "+ webElements.size());
}
Tela
Story: 1626436 Tamando da Lista: 1 //Está correto. Só resultado da busca foi 1
Story: 1626440 Tamando da Lista: 3 //Está Errado. Só resultado da busca deveria ter sido 2
Story: 1626447 Tamando da Lista: 5 //Está Errado. Só resultado da busca deveria ter sido 1
A minha suspeita era de que a lista webElements estava acumulando a lista anterior entao, tentei usar o metodo clear(), mas tb não funcionou. Ficou assim:
for (Story story : stories) {
List webElements = driver.findElements(By.xpath("//* [contains(text(),‘Planned’) and @class=‘HistoryColumn0’]//following::td[1]"));
System.out.println("Story: "+ story.getId() + " Tamando da Lista: "+ webElements.size());
webElements.clear();
}
Tela
Story: 1626436 Tamando da Lista: 1 //Está correto. Só resultado da busca foi 1
Story: 1626440 Tamando da Lista: 3 //Está Errado. Só resultado da busca deveria ter sido 2
Story: 1626447 Tamando da Lista: 5 //Está Errado. Só resultado da busca deveria ter sido 1
Tb tentei fazer webElements = null mas o resultado foi o mesmo.
O que estou suspeitando agora é que a propria lista driver.findElements está acumulando a lista anterior mas, nessa caso, não sei como posso “limpa-la”.
Teria alguma dica?
Valeu!