2
respostas

Testes instáveis!

Os testes estão com resultados intermitentes. A solução que encontrei foi acrescentar esperas entre 0,5 e 1s após cada clique de botão (menos o excluir, que abre um alert em seguida).

    private void sleep(int millis) {
        try {
            Thread.sleep(millis);
        } catch (InterruptedException e) {}
    }

Qual é a abordagem recomendada pada deixar os testes mais robustos?

2 respostas

Oi José,

Isso realmente é ruim e realmente acontece com Selenium, principalmente quando temos alguns javascripts na view que manipulam os elementos. Uma outra abordagem que pode ser usada é usar o wait do Selenium e pedir para ele aguardar aparecer um determinado elemento antes de prosseguir. Ex.: WebDriverWait do Selenium wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("algum-class")));

Obrigado, Thiago.

Parece ser uma boa ideia esperar que determinados elementos sejam carregados logo após acionamos algum link ou click! Vi algo assim no Selenium IDE, há um tempo atrás.

Para o momento, mudei a abordagem defiinido uma espera padrão no driver, evitando ter que chamar "sleep" a cada click:

this.driver = new FirefoxDriver();
this.driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);

Neste exemplo, defini uma espera implícita de 1s.


Encontrei uma página que explica as duas abordagens:

WebDriver: Advanced Usage -- Explicit and Implicit Waits.