Ree-executar testes automatizados novamente seleinum webdriver

Olá a todos,
eu tenho um projeto com mais de 100 testes automatizados, mas as vezes quando executo alguns falham por não acharem o elemento, alguém já teve que ree-executar eles automaticamente?

Se já passaram por isso lembram de algo que fizeram?

Meu ambiente
Eclipse Java + Maven + selenium web driver + junit

Muito obrigado ^^

Oi @Maicon-Fang , tudo bem?! Este é um problema bem comum, já passei por isso também!

Acredito que você consiga resolver este problema sem a necessidade de re-executar o teste, utilizando esperas explícitas. Vou dar um exemplo depois explicar o motivo:

wait.until(ExpectedConditions.visibilityOf(elemento));

No código acima, estou dizendo: “Espere até que o elemento fique visível”. Você pode colocar esta linha de código antes da ação que você deseja realizar com o elemento em questão.

wait.until(ExpectedConditions.visibilityOf(elemento)); // "Espere até que o elemento fique visível"
elemento.sendKeys(“Deu certo mermao”); // “Para interagir com ele inserindo um texto”

Existem várias técnicas de waits explícitos que talvez possam te ajudar. Tenta encaixar o exemplo acima de alguma forma em sua arquitetura de testes e vamos trocando ideia aqui

Recomendo também a leitura dos links abaixo:

Espero que ajude, abraços

– Samuel Lucas

Olá Samuel, eu estou usando “wait.until…” isso me ajudou bastaste, estou buscando outra forma de resolver. Muito obrigado pela ajuda ^^

Para o protractor existe o protractor-flake (https://www.npmjs.com/package/protractor-flake), mas ainda assim recomendo tratar a fragilidade do teste ao invés de usar uma ferramenta do tipo e deixar a fragilidade de lado.

@maicon-fang pra aprender sobre waits explícitos, já escrevi um post muito completo sobre: http://stefanteixeira.com.br/2014/04/29/entendendo-os-tipos-de-esperas-no-selenium-webdriver/

Se nada der certo e vc continuar tendo testes flaky, especialmente quando rodam no servidor de CI, vc pode usar o surefire plugin do Maven pra executar novamente os testes que falharam: http://maven.apache.org/surefire/maven-surefire-plugin/examples/rerun-failing-tests.html

O testng tem um esquema de re-executar testes que falharam… o junit tb não tem?

@stefanteixeira bom dia, obrigado a você e a os demais que estão me ajudando,
o primeiro link que você passou eu já consultei muitas vezes é muito bom.

O segundo link estou tentando configurar ele no pom do meu projeto, eu alterei um test pra falhar sempre, mas quando rodo ele pelo mavem o teste executa somente uma vez, abaixo segue de forma resumida o que está no pom do meu projeto.

	<dependency>
		<groupId>org.apache.maven.surefire</groupId>
		<artifactId>surefire-api</artifactId>
		<version>2.20</version>
	</dependency>
			<plugin>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.20</version>
				<configuration>
					<includes>
						<include>TesteCenarioCargoPageObject.java</include>
					</includes>
				</configuration>
			</plugin>
<properties>
	<surefire.rerunFailingTestsCount>2</surefire.rerunFailingTestsCount>
</properties>

@Maicon-Fang estranho… tira o parâmetro dessa tag <properties> e faz essas tentativas:

Depois avisa aqui o que teve de resultados… caso nada dê certo é melhor postar o POM aqui de forma mais formatada (coloca num gist - https://gist.github.com/), além de mostrar como vc está rodando esses testes.

Olá, até agora não consegui fazer funcionar corretamente
Fiz as alterações que você comentou, segue link do meu projeto https://github.com/maiconfang/veltiponto/tree/master/br.com.velti.vwponto.web.teste.pontocorporativo

Eu executo o comando no cmd mvn -Dsurefire.rerunFailingTestsCount=2 test abaixo o link do resultado exibido no cmd
https://gist.github.com/maiconfang/e28e25bb0883d01dd0150d50df667129

E passando a config no POM, como o link que mandei, já tentou?

Tb queria ver como tá esse report gerado em target/surefire-reports

Boa tarde @stefanteixeira, primeiramente obrigado pela ajuda, consegui fazer funcionar, solução foi: criar outro projeto maven e segui sua dica de colocar as classes conforme abaixo,

src/main/java <- aqui vai só código Java, seus PageObjects devem ficar aqui
src/test/java <- aqui vai só código de teste (com @Test, @Before, etc)

O pom ficou conforme link abaixo
https://gist.github.com/maiconfang/78e884a58d54e98fd2b1a680c70e5023

Log in to reply

Looks like your connection to Agile Testers was lost, please wait while we try to reconnect.