Pessoal estou começando a usar Selenium para fazer alguns teste, preciso testar uma página web que contém muitas chamadas ajax, e esta dando muitos erros.
Tenho que selecionar todos os itens de um dropdown , cada item que eu seleciono e realizado uma chamada ajax diferente em outro dropdowm.
Para cada estado que eu seleciono no dropdown abaixo é listado todas as cidades.
consigo selecionar todos os estados, porem quando tento localizar o dropdown das cidades, sempre da erro.
Aqui minha classe:
package com.br.portoseguro;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.StaleElementReferenceException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.FluentWait;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.Wait;
public class PortoSeguroService {
public void navegar() {
Timer tempo = new Timer();
WebDriver driver = new FirefoxDriver();
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(10, TimeUnit.SECONDS)
.pollingEvery(1, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class)
.ignoring(StaleElementReferenceException.class);
driver.navigate()
.to("https://wwws.portoseguro.com.br/rederef/redereferenciadamobile.aspx?CONSULTA=SAUDE");
WebElement rbCidade = wait.until(ExpectedConditions
.elementToBeClickable(By.id("rblInicio_1")));
rbCidade.click();
if (rbCidade.isSelected()) {
tempo.scheduleAtFixedRate(new TimerTask() {
int index = 1;
@Override
public void run() {
WebElement selectEstado = wait.until(ExpectedConditions
.presenceOfElementLocated(By.id("cboEstado")));
Select listaEstado = new Select(selectEstado);
listaEstado.selectByIndex(index);
System.out.println("Estado: " + listaEstado.getOptions().get(index).getText().toUpperCase());
//não consigo localizar o elemento html no documento
WebElement selectCidade = wait.until(ExpectedConditions
.presenceOfElementLocated(By.id("cboEstado")));
index++;
if (index == listaEstado.getOptions().size())
tempo.cancel();
}
}, 1000, 9000);
//porem caso eu tento localizar fora do método run(), todo ocorre normalmente
WebElement selectCidade = wait.until(ExpectedConditions
.presenceOfElementLocated(By.id("cboEstado")));
}
}
public static void main(String[] args) {
new PortoSeguroService().navegar();
}
}
preciso localizar os cidades no temporizador do método run(), e não da certo, porem caso eu tente localizar o elemento html fora do temporizador, a localização é realizada normalmente, alguém sabe oque pode ser?


