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!
 

0 comentários
  1. Olá André!
    O meu teste não esta rodando… você poderia fazer um post explicando os principais erros que ocorrem e como corrigir.
    Obrigada!!

  2. 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.

  3. 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.

  4. 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.

  5. 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

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

Talvez você goste desses conteúdos também: