Selenium WebDriver – Primeiro script de testes no Eclipse

Para criar o primeiro script de testes, primeiramente, devemos ter realizado as configurações do projeto, de acordo com o post anterior.

Realizadas as configurações, devemos criar uma JUnit Test Case. Para este exemplo, chamaremos de “ExemploTaketest”.

Para a criação da classe, devemos seguir os seguintes passos: clicar com o botão direito em cima do projeto TakeTestWebDriver > New > JUnitTestCase.

Figura 1 – Criando o JUnit Test Case


Ao abrir o JUnit Test Case, você deverá preencher o campo Name, deixar as outras configurações no default e clicar em Finish.

Figura 2 - Nomeando o JUnit Test Case

Figura 2 – Nomeando o JUnit Test Case


Para escrevermos os scripts dos testes, precisaremos entender um pouco sobre as chamadas e as classes WebDriver e WebElement, que utilizaremos nos testes.

Chamadas

  • @Before: é executado antes de qualquer Caso de Teste, por exemplo, abrir uma página em um browser.
  • @Test: é utilizado para identificar que é Caso de Teste.
  • @After: todas as ações que estão contidas nele são executadas após cada Caso de Teste rodar; por exemplo: fechar browser.

WebDriver

O WebDriver é a classe base do Selenium. A partir dela, podemos realizar diversas funcionalidades de navegação; por exemplo: abrir um browser, fechar um browser, fechar uma aba de um browser, entre outras. Para o nosso exemplo de script de testes, utilizaremos abrir e fechar um browser.

Seguem exemplos de funções de navegação que serão utilizadas:

  • Abrir o browser: get(“url”);
  • Atualizar página: navigate().refreseh();
  • Fechar página: quit();

WebElement

WebElement é uma classe do Selenium representando um elemento HTML. As principais operações de interação em uma página são realizadas através desta interface; por exemplo: interações com caixas de texto, botões, links, entre outras.

Dentro dessa classe, utilizarmos o método findElements no nosso primeiro test case. Este método permite localizar os elementos dentro de uma página. Porém, para localizar o elemento, precisaremos também da classe By, que determina o meio (ID, name, class, xpath) pelo qual o iremos encontrar.

Seguem exemplos de como codificar para encontrar os elementos:

  • Encontrar elementos através do ID:

WebElement elemento = driver.findElement(By.id(“ID do elemento”));

  • Encontrar elementos através no nome:

WebElement elemento = driver.findElement(By.name(“nome elemento”));

  • Encontrar elementos através do nome da classe:

WebElement element = driver.findElement(By.className(“nome classe”));

Dentro desta mesma classe, utilizaremos validações de elementos, através de asserts.

Exemplos de como codificar para validação dos elementos:

  • Validar se o elemento está exibido na página:

assertTrue(topicosrecentes.isDisplayed());

  • Validar se o nome do elemento contém o texto:

assertTrue(menusobre.getText().contains(“SOBRE”));

  • Validar se o nome do elemento é igual o texto:

assertTrue(tagwebdriver.getText().equals(“Webdriver”));

Lembrando que existem vários outros tipos de validações em Java.

Criando o script de test

Com a combinação das três classes acima, podemos começar a criar o primeiro caso de teste, que será encontrar os elementos Menu Sobre, Tag WebDriver e Tópicos Recentes do blog TakeTest.

Para os nossos testes, utilizaremos algumas bibliotecas, que deverão ser importadas nos testes como exemplificado abaixo:

Figura 3 – Bibliotecas que serão utilizadas nos testes


Após importarmos as bibliotecas, colocaremos o método setUp() dentro da nossa classe principal, para acessar o site do blog através do Firefox todas as vezes em que algum teste for executado como demonstrado na figura 4.

A variável “driver” no exemplo abaixo aponta qual navegador usaremos para os testes como descrito na primeira linha. A partir dessa informação, poderemos setar as configurações do navegador e para qual site ele irá apontar, conforme descrito nas linhas 2 e 3 abaixo:

Figura 4 – Abrindo a página do blog


Agora precisamos do “meio” através do qual iremos localizar os elementos. Para isso, basta abrir o blog no Firefox, acionar o botão F12, acionar o botão “Inspecionar Elemento” 
e clicar sobre o link/botão/texto pretendido. Para o Menu Sobre, utilizaremos o ID “menu-item-19”, para a Tag WebDriver, a class tag-link-32 e para os Tópicos Recentes ID “recent-posts-2”.

Figura 5 - Exemplo de como pegar id no Firefox

Figura 5 – Exemplo de como pegar ID do elemento no Firefox


Após localizar os elementos acima, implementaremos o nosso código para a validação deles dentro do nosso primeiro Caso de Teste, conforme abaixo:

Figura 6 - Ações para encontrar os elementos

Figura 6 – Ações para encontrar os elementos


Logo que os elementos forem encontrados, atualizaremos a página através do código:

Figura 7 - Atualizar página

Figura 7 – Atualizar página


Para fechar o browser todas as vezes que cada teste for executado, incluiremos no final um método com a função driver.quit().

Figura 16 - Método para fechar página

Figura 8 – Para fechar página


Após ter seguido os passos acima, o nosso script de testes deverá ficar da seguinte forma:

Figura 8 - Script de teste completo

Figura 9 – Script de teste completo


Para execução dos testes, você deverá clicar em Run e seu teste deverá ser executado.

Figura 9 - Executar os testes

Figura 10 – Executar os testes


Após a execução dos testes, o Eclipse exibirá a informação com os resultados dos testes, como pode ser observado na imagem abaixo:

Figura 10 - Resultado dos testes

Figura 11 – Resultado dos testes


Pronto! Criamos o nosso primeiro script de teste. A partir deste, temos diversas variações de comandos e verificações que podemos realizar nos nossos próximos scripts.

Nos próximos posts, demonstraremos como instalar, configurar e um exemplo de testes no Microsoft Visual Studio na linguagem C#.

Até a próxima!

 

Sobre o(a) autor(a)

André Dutra
André Dutra

Apaixonado por tecnologia, principalmente pela área de testes. Trabalha na área de teste desde 2011, hoje como analista de QA na Take, é responsável por homologar e criar testes automatizados dos produtos, sejam apps, web, sms… Participou do Software Testing World Cup 2014, na equipe The Bug Buster composta pela Letícia, Samantha (QA) e Rhamon (PO), conquistando o 4º lugar na etapa South America, com o prêmio de Most Useful Test Report.

22 comentários

Comente
  • Ótimo post! Apenas uma correção em Atualizar página: “navigate.refreseh()” deve ser “navigate().refresh()”

  • Sensacional….fiz várias buscas e só aqui encontrei um conteúdo que funcionou de verdade com passo a passo claro.
    Parabéns.

  • Olá André!

    O meu teste não esta rodando… você poderia fazer um post explicando os principais erros que ocorrem e como corrigir.

    Obrigada!!

    • Conseguiu resolver Regina?
      Estou com erro Cannot be Resolved na lina “import org.openqa.selenium.Webdriver;”

  • André quando executo no eclipse, está abrindo apenas a página do firefox e não acessando a página do blog “taketest”.

    Abaixo o código que estou rodando, poderia ver se coloquei algo errado, pois já revisei muitas vezes.

    import static org.junit.Assert.*;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.WebElement;

    public class JUnitTest {

    private WebDriver driver;
    @Before // Para acessar o nosso Blog antes da execucao de cada teste
    public void setUp()
    {
    driver = new FirefoxDriver();
    driver.get(“http://www.taketest.com.br/”);
    driver.manage().window().maximize(); //Maiximizar a pagina
    }

    @Test
    public void encontrarElemmentos()
    {
    WebElement menusobre = driver.findElement(By.id(“manu-iem-19”));
    assertTrue(menusobre.getText().contains(“SOBRE”));

    WebElement topicosrecentes = driver.findElement(By.id(“recent-posts-2”));
    assertTrue(topicosrecentes.isDisplayed());

    WebElement tagwebdriver = driver.findElement(By.className(“tag-link-32”));
    assertTrue(tagwebdriver.getText().equals(“Webdriver”));
    }

    @Test
    public void atualizarPagina()
    {
    driver.navigate().refresh();
    }

    @After
    public void fecharPagina()
    {
    driver.quit();
    }
    }

    Obrigado pela atenção.

  • Jeferson, boa tarde!
    Coloquei seu código na minha máquina ele rodou com sucesso.
    Quando você executa, aparece alguma mensagem de erro, ou apenas não abre o site do blog taketest?
    Se ainda estiver com erro, entre em contato no email contato@taketest.com.br.

  • Olá, André…
    Antes de tudo, MUITO obrigado pelos posts e pela facilidade e clareza no qual você passou na escrita.

    Ando lendo um pouco sobre o Selenium WebDriver e sou totalmente leigo e novo na área e o blog de vocês é sensacional.

    Enfim,
    tentei aquele passo a passo do primeiro Script no Eclipse com Selenium WebDriver fazendo pequenas modificações como verás no script. Porém, estou levando um erro “The path to the driver executable must be set by the webdriver.chrome….”

    E não consigo sair.
    E uma observação importante.
    Antes de colocar as “Chamadas” estava funcionando direitinho…agora deu isso.

    Poderia me ajudar?

    SCPRIT:

    public class EntrandoGoogle
    {
    private WebDriver driver;
    @Before
    public void abrirNavegador()
    {

    driver = new ChromeDriver();
    driver.get(“https://www.google.com.br/?gws_rd=ssl”);
    driver.manage().window().maximize();

    }
    @Test
    public void preencherBusca()
    {
    WebElement buscarGoogle = driver.findElement(By.id(“hplogo”));
    assertTrue(buscarGoogle.getText().contains(“hplogo”));

    @Test
    public void atualizarPagina()
    {
    driver.navigate().refresh();

    }

    @After
    public void fecharNavegador() throws InterruptedException
    {

    driver.quit();

    }

    }

    MUITO OBRIGADO!
    OBS:
    Tentei enviar email pro “contato@taketest.com.br” e não consegui.

  • Parabéns pela iniciativa de ajudar os iniciantes, as suas dicas são bastante valiosas, gostaria de saber se tem alguma maneira de de abrir o navegador (No meu caso o Chrome), de abrir em modo anonimo ou com algum usuário especifico já cadastrado no navegador.

  • Olá, boa tarde.

    Primeiramente obrigado pelo artigo.

    Estou com problema para fazer o findElements By ClassName quando o atributo class do html da página carregada tem mais de uma classe, por exemplo

    se eu faço loDriver.FindElements(By.ClassName(“class1”)); não encontra nada

    se eu faço loDriver.FindElements(By.ClassName(“class1 class2”)); dá erro, aparentemente não pode ter espaço em branco.

Deixe uma resposta para Pepper Cancelar

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Você pode usar as seguintes tags e atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

by Take ® 2015 | Todos os direitos reservados.linkedin