TestNG Ouvintes em Selenium
โก Resumo Inteligente
Ouvintes em Selenium WebDriver sรฃo TestNG Interfaces que interceptam eventos de teste para personalizar logs, relatรณrios e aรงรตes pรณs-falha. Este artigo explica os mรฉtodos de ITestListener e demonstra um exemplo executรกvel. Java exemplo, e esclarece como Selenium A versรฃo 4 substituiu a versรฃo obsoleta WebDriverEventListener.

Selenium Os scripts do WebDriver frequentemente precisam reagir a eventos de teste, como uma asserรงรฃo bem-sucedida, uma falha de localizaรงรฃo ou uma etapa ignorada. Os listeners tornam isso possรญvel. De forma geral, Selenium Os projetos dependem de duas famรญlias de ouvintes:
- Ouvintes do WebDriver
- TestNG Ouvintes
Neste tutorial, vamos nos concentrar em TestNG Ouvintes, com uma observaรงรฃo sobre como os ouvintes em nรญvel WebDriver mudaram em Selenium 4.x.
O que รฉ um ouvinte em TestNG?
Um Listener รฉ uma interface que modifica o comportamento padrรฃo de TestNGComo o nome sugere, os Listeners โescutamโ eventos definidos em um Selenium Vocรช pode criar scripts e reagir de acordo. Para usรก-los, implemente a interface Listener relevante e registre-a em sua classe ou conjunto de testes. Os Listeners permitem personalizar o comportamento do usuรกrio. TestNG Gera relatรณrios, anexa capturas de tela e emite registros estruturados.
Tipos de ouvintes em TestNG
TestNG O sistema fornece uma famรญlia de interfaces de ouvinte, cada uma direcionada a um estรกgio diferente do ciclo de vida de testes.
Abaixo estรฃo os mais usados. TestNG ouvintes:
- IAnnotationTransformador
- IAnotaรงรฃoTransformador2
- IConfigurรกvel
- ICConfiguraรงรฃoListener
- IExecutionListener
- IHookable
- IInvokedMethodListener
- IInvokedMethodListener2
- IMethodInterceptor
- Repรณrter
- ISSuiteListener
- ITestListener
Essas interfaces sรฃo usadas em Selenium para gerar registros ou personalizar TestNG relatรณrios. Neste tutorial, vamos implementar ITestListener.
ITestListener expรตe os seguintes mรฉtodos:
- onStart โ Chamado quando qualquer teste comeรงa.
- onTestSuccess โ Chamado quando um teste รฉ aprovado.
- onTestFailure โ Chamado quando um teste falha.
- onTestSkipped โ Chamado quando um teste รฉ ignorado.
- onTestFailedButWithinSuccessPercentage โ ร chamado quando um teste falha, mas estรก dentro da porcentagem de sucesso.
- onFinish โ Chamado apรณs a execuรงรฃo de todos os testes da classe.
Cenรกrio de Teste
Neste cenรกrio de teste, automatizaremos o processo de login e implementaremos ITestListener contra isso.
- Lanรงamento Firefox e abra o site https://demo.guru99.com/V4/
- Faรงa login no aplicativo.
Etapas para criar um TestNG Ouvinte
Para o cenรกrio de teste acima, implementaremos o Listener passo a passo.
Passo 1) Crie uma classe chamada Teste de ouvinte que implementa ITestListenerPasse o cursor sobre o sublinhado vermelho e Eclipse Sugeriremos duas soluรงรตes rรกpidas, conforme mostrado abaixo:
Clique em โAdicionar mรฉtodos nรฃo implementadosโ. Vรกrios mรฉtodos stub (sem corpo) serรฃo adicionados ao seu cรณdigo, semelhantes a este:
importar org.testng.ITestContext;
importar org.testng.ITestListener;
importar org.testng.ITestResult;
aula pรบblica Teste de ouvinte implementa ITestListener {
@ Override
vazio pรบblico onFinish(ITestContext arg0) {
// TODO Esboรงo de mรฉtodo gerado automaticamente
}
@ Override
vazio pรบblico onStart(ITestContext arg0) {
// TODO Esboรงo de mรฉtodo gerado automaticamente
}
@ Override
vazio pรบblico onTestFailedButWithinSuccessPercentage(Resultado do teste arg0) {
// TODO Esboรงo de mรฉtodo gerado automaticamente
}
@ Override
vazio pรบblico onTestFailure(Resultado do teste arg0) {
// TODO Esboรงo de mรฉtodo gerado automaticamente
}
@ Override
vazio pรบblico onTestSkipped(Resultado do teste arg0) {
// TODO Esboรงo de mรฉtodo gerado automaticamente
}
@ Override
vazio pรบblico onTestStart(Resultado do teste arg0) {
// TODO Esboรงo de mรฉtodo gerado automaticamente
}
@ Override
vazio pรบblico onTestSuccess(Resultado do teste arg0) {
// TODO Esboรงo de mรฉtodo gerado automaticamente
}
}
Agora vamos modificar o Teste de ouvinte classe. Em particular, preencheremos os seguintes mรฉtodos: em caso de falha no teste, onTestSkipped, onTestStart e sucesso do teste.
A mudanรงa รฉ simples: cada mรฉtodo imprime o nome do teste para que o console mostre claramente o status de aprovado, reprovado e ignorado.
Apรณs a modificaรงรฃo, o cรณdigo ficou assim:
importar org.testng.ITestContext;
importar org.testng.ITestListener;
importar org.testng.ITestResult;
aula pรบblica Teste de ouvinte implementa ITestListener {
@ Override
vazio pรบblico onFinish(ITestContext Resultado) {
}
@ Override
vazio pรบblico onStart(ITestContext Resultado) {
}
@ Override
vazio pรบblico onTestFailedButWithinSuccessPercentage(Resultado do teste Resultado) {
}
// Quando um caso de teste falha, este mรฉtodo รฉ chamado.
@ Override
vazio pรบblico onTestFailure(Resultado do teste Resultado) {
System.out.println(O nome do caso de teste que falhou รฉ: + Resultado.getName());
}
// Quando um caso de teste รฉ ignorado, este mรฉtodo รฉ chamado.
@ Override
vazio pรบblico onTestSkipped(Resultado do teste Resultado) {
System.out.println(O nome do caso de teste ignorado รฉ: + Resultado.getName());
}
// Este mรฉtodo รฉ chamado quando um caso de teste รฉ iniciado.
@ Override
vazio pรบblico onTestStart(Resultado do teste Resultado) {
System.out.println(Result.getName() + "Caso de teste iniciado");
}
// Quando um caso de teste รฉ aprovado, este mรฉtodo รฉ chamado.
@ Override
vazio pรบblico onTestSuccess(Resultado do teste Resultado) {
System.out.println(O nome do caso de teste aprovado รฉ: + Resultado.getName());
}
}
Passo 2) Crie outra classe chamada Casos de teste para a automaรงรฃo de login. Selenium Esta classe serรก executada para fazer login no site de demonstraรงรฃo.
importar org.openqa.selenium.By;
importar org.openqa.selenium.WebDriver;
importar org.openqa.selenium.firefox.FirefoxMotoristas;
importar org.testng.Assert;
importar org.testng.annotations.Listeners;
importar org.testng.annotations.Test;
aula pรบblica Casos de teste {
webdriver motorista = new FirefoxDirigir();
// Teste projetado para ser aprovado, para verificar o ouvinte de sucesso.
@Teste
vazio pรบblico Conecte-se() {
motorista.obter(โhttps://demo.guru99.com/V4/โ);
driver.findElement(By.name(โuidโ)).sendKeys(โmngr34926โ);
driver.findElement(By.name("senha")).sendKeys(โamUpenuโ);
driver.findElement(By.name(โbtnLoginโ)).clique();
}
// Teste forรงado com falha, para verificar o ouvinte de falhas.
@Teste
vazio pรบblico TestarParaFalhar() {
System.out.println(โEste mรฉtodo de teste falhouโ);
Assert.assertTrue(falso);
}
}
Passo 3) Em seguida, anexe esse ouvinte ร nossa classe de teste. Casos de testeExistem duas maneiras de conectar uma classe a uma interface de ouvinte.
A primeira maneira รฉ usar o @Ouvintes anotaรงรฃo, conforme mostrado abaixo:
Adicionamos esta anotaรงรฃo acima do Casos de teste classe. A classe entรฃo fica assim:
importar org.openqa.selenium.By;
importar org.openqa.selenium.WebDriver;
importar org.openqa.selenium.firefox.FirefoxMotoristas;
importar org.testng.Assert;
importar org.testng.annotations.Listeners;
importar org.testng.annotations.Test;
@Listeners(Listener_Demo.ListenerTest.class)
aula pรบblica Casos de teste {
webdriver motorista = new FirefoxDirigir();
// Teste para passar, para verificar o ouvinte de sucesso.
@Teste
vazio pรบblico Conecte-se() {
motorista.obter(โhttps://demo.guru99.com/V4/โ);
driver.findElement(By.name(โuidโ)).sendKeys(โmngr34926โ);
driver.findElement(By.name("senha")).sendKeys(โamUpenuโ);
driver.findElement(By.name(โbtnLoginโ)).clique();
}
// Teste forรงado com falha, para verificar o ouvinte de falhas.
@Teste
vazio pรบblico TestarParaFalhar() {
System.out.println(โEste mรฉtodo de teste falhouโ);
Assert.assertTrue(falso);
}
}
A estrutura do projeto se parece com:
Passo 4) Execute o Casos de teste classe. Mรฉtodos dentro Teste de ouvinte sรฃo invocadas automaticamente com base no comportamento dos mรฉtodos anotados com @Teste.
Passo 5) Verifique a saรญda exibida no console.
A saรญda de Casos de teste parece:
C:\Users\gauravn\AppData\Local\Temp\testng-eclipseโ1058076918\testng-customsuite.xml
Caso de teste de login iniciado
O nome do caso de teste aprovado รฉ: Login
Caso de teste TestToFail iniciado
Este mรฉtodo de teste falhou
O nome do caso de teste que falhou รฉ: TestToFail
APROVADO: Login
FALHOU: TestToFail
java.lang.AssertionError: esperava-se [true], mas foi encontrado [false]
Utilizando um ouvinte para mรบltiplas classes
Se um projeto tiver muitas classes de teste, adicionar o @Ouvintes A anotaรงรฃo para cada um deles torna-se trabalhosa e propensa a erros.
Nesse caso, crie um testeng.xml Crie o arquivo e registre o ouvinte lรก uma รบnica vez.
Esse ouvinte รฉ entรฃo aplicado a todo o conjunto de testes, independentemente do nรบmero de classes. Ao executar o arquivo XML, o ouvinte รฉ acionado para cada classe declarada no conjunto, e vocรช pode encadear qualquer nรบmero de classes de ouvinte dentro da mesma tag.
WebDriverListener em Selenium 4 em comparaรงรฃo com o EventFiringWebDriver obsoleto
Embora o TestNG Os listeners reagem a eventos do ciclo de vida do teste, enquanto os listeners do WebDriver reagem a aรงรตes do driver do navegador, como um clique, uma navegaรงรฃo ou uma chamada findElement. Selenium 3. A abordagem tรญpica era a Ouvinte de evento do WebDriver interface cabeada atravรฉs de EventFiringWebDriverAmbos estรฃo obsoletos em Selenium 4.x.
O substituto moderno รฉ o Ouvinte do WebDriver interface combinada com Decorador de eventosFiringDecorator:
importar org.openqa.selenium.chrome.ChromeDriver;
importar org.openqa.selenium.support.events.EventFiringDecorator;
importar org.openqa.selenium.support.events.WebDriverListener;
aula pรบblica Ouvinte de registro implementa Ouvinte do WebDriver {
@ Override
vazio pรบblico antes deObter(webdriver motorista, URL da string) {
System.out.println(โNavegando atรฉ โ + url);
}
}
webdriver bruto = new ChromeDriver();
webdriver motorista = new Decorador de eventosFiringDecorator<>(new LoggingListener()).decorate(raw);
O decorador pode envolver qualquer WebDriver, WebElement ou Alert, o que รฉ mais flexรญvel do que o antigo encapsulador de disparo de eventos. Use Ouvinte do WebDriver para observabilidade do lado do navegador e TestNG ITestListener para geraรงรฃo de relatรณrios em nรญvel de suรญte.
Ouvintes com inteligรชncia artificial: registros mais inteligentes e triagem de falhas.
EQUIPAMENTOS Selenium As equipes estรฃo cada vez mais integrando serviรงos de IA aos seus sistemas de monitoramento para tornar os sinais de inteligรชncia coletiva mais acionรกveis. em caso de falha no testeUm ouvinte com auxรญlio de IA pode capturar um instantรขneo do DOM e uma captura de tela, enviรก-los para um modelo que retorna um cluster de causa raiz provรกvel e gravar uma tag de volta no DOM. TestNG relatรณrio ou uma ferramenta como o ReportPortal.
Os padrรตes comuns orientados por IA incluem:
- Detecรงรฃo de testes instรกveis: Os ouvintes encaminham cronogramas de aprovaรงรฃo/reprovaรงรฃo para um modelo que classifica uma falha como instรกvel, ambiental ou uma regressรฃo real.
- Capturas de tela inteligentes: Os modelos de visรฃo computacional recortam, anotam e comparam capturas de tela da interface do usuรกrio para que os revisores vejam a regiรฃo alterada em vez de uma pรกgina inteira.
- Localizadores com capacidade de autorreparaรงรฃo: A Ouvinte do WebDriver ganchos antesDeEncontrarElemento e pede a um assistente de IA que sugira um localizador alternativo quando o principal falhar. NoSuchElementException.
- Resumos em linguagem natural: An Repรณrter A implementaรงรฃo alimenta os resultados do conjunto de testes em um LLM (Learning Learning Management) que produz um resumo de um parรกgrafo para apresentaรงรฃo da reuniรฃo.
A camada de ouvinte รฉ o local mais adequado para injetar esses ganchos, pois permanece fora da lรณgica de teste e se aplica uniformemente em todo o conjunto de testes.
Resumo
Os ouvintes sรฃo obrigados a gerar logs ou personalizar TestNG relatรณrios em Selenium WebDriver.
- TestNG Oferece vรกrias interfaces de ouvinte; escolha aquela que corresponde ao evento que lhe interessa.
- Ouvintes sรฃo interfaces usadas em Selenium Scripts do WebDriver para reagir a eventos do ciclo de vida de testes.
- O tutorial demonstrou ITestListener com um teste de aprovaรงรฃo e um teste de reprovaรงรฃo.
- Vocรช pode anexar um ouvinte com @Ouvintes ou registre-o uma vez em testeng.xml para toda a suรญte.
- Selenium 4.x substitui EventFiringWebDriver com as Ouvinte do WebDriver + Decorador de eventosFiringDecorator para eventos de nรญvel WebDriver.






