Como fazer uma captura de tela no Selenium WebDriver



Este artigo sobre como fazer uma captura de tela no Selenium WebDriver ajuda você a aprender como capturar a captura de tela usando o método TakesScreenshot e ouvintes TestNG

Os testes de automação definiram uma nova torneira dos testes modernos e veio para ficar. No entanto, se o processo de teste falhar, seria altamente inconveniente testar novamente o script inteiro. É aqui que as capturas de tela são úteis, pois ajudam a detectar falhas de teste instantaneamente. Por meio deste blog, aprenderemos como fazer uma captura de tela em WebDriver.

Discutirei os seguintes tópicos:

Então, vamos começar, pessoal!





Captura de tela no Selenium WebDriver: Por que a captura de tela é necessária nos testes de automação?

Capturas de tela são desejáveis ​​para análise de bug. pode tirar capturas de tela automaticamente durante a execução. Suponha que você escreva um script de teste para automatizar uma página da web, você não manteria o monitoramento para ver se está funcionando bem o tempo todo. Você deixaria o script fazer seu trabalho e você estaria ocupado com outro trabalho.

  • As capturas de tela nos ajudam a entender o fluxo do aplicativo e a verificar se ele está se comportando de acordo.
  • Você precisa fazer o typecast da instância do WebDriver para TakesScreenshot.
  • Isso ajuda enquanto você está se apresentando teste de navegação cruzada como o usuário precisa para ver os relatórios de execução
  • Rastrear a execução seria muito fácil se você estiver trabalhando em um navegador sem controle.
  • Capturas de tela dos testes que falharam também podem ser facilmente capturadas.

Agora, vamos seguir em frente e aprender exatamente como você pode fazer uma captura de tela enquanto testa um aplicativo.



Captura de tela no Selenium WebDriver: Como capturar a tela no Selenium?

Para capturar uma imagem no Selenium, podemos fazer uso de uma interface, chamada TakesScreenshot. Este método euindica ao motorista que pode capturar uma imagem e armazená-la de diferentes maneiras.

Sintaxe:



File file = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.FILE) String screenshotBase64 = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.BASE64)

Onde Tipo de saída define o tipo de saída para uma captura de tela.

Para capturar a tela e armazená-la em um local específico, existe um método chamado “ getScreenshotAs '

Vamos entender isso em detalhes

Para WebDriver estendendo TakesScreenshot método, isso faz o melhor esforço dependendo do navegador para retornar o seguinte em uma ordem preferível:

  • A página inteira
  • Janela atual
  • Parte visível do quadro atual
  • Uma captura de tela de toda a tela contendo o navegador
  • Todo o conteúdo do elemento HTML - a parte visível do elemento HTML

Sintaxe:

X getScreenshotAs (OutputType (X). Target) lança WebDriverException

Onde

  • X é o tipo de retorno do método
  • Alvo contém o endereço de destino
  • Lança se a implementação subjacente não suportar captura de tela.

O caso de teste falhou

surgiu com algumas novas funcionalidades excelentes que tornam o teste de um aplicativo muito mais fácil. Isso ocorre porque o permite a interação fora da sandbox Javascript. Uma das novas funcionalidades úteis é poder fazer capturas de tela do WebDriver.

Você pode fazer capturas de tela em qualquer fase do teste, mas principalmente, é usado para quando um teste falha e fazer capturas de tela ajuda a análise para que possamos ver o que deu errado durante uma falha de teste. Isso pode ser feito usando Anotações TestNG.

Para fazer isso, primeiro, eu preciso

  • Crie uma classe e implementeTestNG ‘ ITestListener ' .
  • Em seguida, chame um método ‘OnTestFailure’ .
  • Adicione o código para fazer a captura de tela neste método.
  • Em vez de apenas fazer a captura de tela, obtenha o nome do método de teste e faça uma captura de tela com o nome do teste e coloque-o na pasta de destino.

Agora, a questão é como obter o objeto driver na classe TestListeners usando TestNG?

Vou ajudá-lo a entender como é fácil fazer isso.

Para fazer uma captura de tela no Selenium, precisamos ter um objeto driver. Obtenha o driver do ITestContext que deve ser definido na configuração básica, onde é fácil criar nossa instância do driver. Espero que vocês estejam claros com isso. Seguindo em frente, daremos uma olhada na demonstração, onde ajudarei você a entender como é simples fazer uma captura de tela no Selenium.

Estarei explicando dois programas diferentes aqui para que você tenha uma ideia adequada sobre como fazer uma captura de tela no Selenium.

O primeiro programa trata de como capturar uma imagem do caso de teste executado com sucesso. O segundo programa ajuda a entender como fazer uma captura de tela durante a falha do teste.

Captura de tela no Selenium WebDriver: Demo

A primeira coisa a fazer quando você deseja testar um aplicativo da web é ter os arquivos Jar Selenium e as bibliotecas Java. Você pode escolher um IDE de sua preferência. Eu prefiro trabalhar no Eclipse IDE porque é fácil de usar.

  • Vou definir o driver do navegador para
  • Instancie a instância do driver com o ChromeDriver.
  • Obtenha o URL da página da web.
  • Execute as ações correspondentes.

Nesse caso, vou tirar uma captura de tela de nossa página oficial

Consulte o código abaixo:

import java.io.File import java.io.IOException import org.apache.commons.io.FileUtils import org.openqa.selenium.OutputType import org.openqa.selenium.TakesScreenshot import org.openqa.selenium.WebDriver import org.openqa .selenium.chrome.ChromeDriver public class Screen {public static void main (String [] args) lança Exception {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopchromedriver_win32chromedriver.exe') WebDriver driver = new ChromeDriver.exe ') driver.get ('http://www.edureka.co/') TakesScreenshot ts = (TakesScreenshot) driver Arquivo fonte = ts.getScreenshotAs (OutputType.FILE) FileUtils.copyFile (fonte, novo arquivo ('./ Screenshots / Tela .png ')) System.out.println (' a captura de tela foi tirada ') driver.quit ()}}

A saída para o código acima é descrita abaixo:

ScreenOutput - Como fazer uma captura de tela no Selenium - Edureka

E a pasta contém a imagem

Agora, vamos entender como fazer uma captura de tela do teste que falhou

  • Primeiro,
  • Adicione o arquivo XML TestNG.
  • Adicione as dependências do maven.
  • Crie uma classe BaseClass que contém a instância do WebDriver.
  • Defina duas funções, nomeadamente inicialização () e falha ()
  • Chame essas duas funções em outra classe, demo que herda a BaseClass.
  • Esta classe Demo contém os dois métodos setUp () que chama a função initialization (), tearDown () ajuda a fechar o driver e ScreenshotTest () onde declaramos a saída real e esperada.
  • Nesse caso, declararei verdadeiro e falso, o que resulta na falha do caso de teste.
  • Crie outra classe, ListenersClass, que ajuda o WebDriver a ouvir os eventos específicos.
  • Adicione este código na classe demo @Listeners (ListenersClass.class) antes da função principal para ouvir o caso de teste.

Você pode consultar este código:

BaseClass

adicione dois números em java
pacote com.edureka import java.io.File import java.io.IOException import org.apache.commons.io.FileUtils import org.openqa.selenium.OutputType import org.openqa.selenium.TakesScreenshot import org.openqa.selenium.WebDriver import org.openqa.selenium.chrome.ChromeDriver import org.testng.annotations.Listeners public class BaseClass {public static WebDriver driver public static void initialization () {System.setProperty ('webdriver.chrome.driver', 'C: UsersNeha_VaidyaDesktopwinchromedriver_32. exe ') driver = new ChromeDriver () driver.get (' http://www.edureka.co/ ')} public void failed () {Arquivo srcFile = ((TakesScreenshot) driver) .getScreenshotAs (OutputType.FILE) try {FileUtils.copyFile (srcFile, new File ('/ C: / Users / Neha_Vaidya / eclipse-workspace / Screens /' + 'ScreenshotsTaken / tests.jpg'))} catch (IOException e) {e.printStackTrace ()}} }

DemoClass

package com.edureka import org.testng.Assert import org.testng.annotations.AfterMethod import org.testng.annotations.BeforeMethod import org.testng.annotations.Listeners import org.testng.annotations.Test @Listeners (ListenersClass.class) public demo de classe estende BaseClass {@BeforeMethod public void setUp () {inicialização ()} @AfterMethod public void tearDown () {driver.quit ()} @Test public void takeScreenshotTest () {Assert.assertEquals (true, false)}}

ListenersClass

pacote com.edureka import org.testng.ITestContext import org.testng.ITestListener import org.testng.ITestResult public class ListenersClass extends BaseClass implementa ITestListener {public void onTestStart (ITestResult result) {// TODO stub de método gerado automaticamente} public void onTestSuccess (ITestResult result) {// TODO Auto-generated method stub} public void onTestFailure (ITestResult result) {System.out.println ('Failed Test') failed ()} public void onTestSkipped (ITestResult result) {// TODO Auto- stub do método gerado} public void onTestFailedButWithinSuccessPercentage (ITestResult result) {// TODO stub do método gerado automaticamente} public void onStart (ITestContext context) {// TODO stub do método gerado automaticamente} public void onFinish (ITestContext context) {// TODO Auto stub de método gerado}}

A saída é representada desta maneira:

Com isso, chegamos ao fim deste blog “Como fazer uma captura de tela no Selenium WebDriver”. Espero que tenham gostado deste artigo e tenham entendido como executar um caso de teste. Tem alguma questão para nós? Mencione isso na seção de comentários de “Como fazer uma captura de tela no Selenium WebDriver” e entraremos em contato com você. Se você deseja aprender mais sobre o Selenium WebDriver e construir uma carreira no mesmo, consulte nosso que vem com treinamento ao vivo conduzido por instrutor e experiência em projetos da vida real. Este treinamento irá ajudá-lo a entender o Teste de Selênio em profundidade e ajudá-lo a obter domínio sobre o assunto.