Introdução ao Selenium WebDriver

Selenium Webdriver

Essa semana começaremos a falar do Selenium Webdriver. Selenium Webdriver é uma ferramenta que oferece uma API que permite a escrita de forma mais produtiva e organizada de scripts de testes.

O Selenium WebDriver faz chamadas diretamente ao navegador utilizando o suporte à automação nativo de cada navegador. Assim os testes escritos com o WebDriver são bastante realistas, pois chama diretamente o navegador. Além disso, o Selenium Webdriver suporta praticamente todos os navegadores web existentes: Google Chrome, Firefox, Internet Explorer, Safari, Opera, etc.

Nesse post iremos automatizar os casos de teste que vimos no post Selenium IDE, um exemplo de uso, onde automatizamos uma busca de CEP no site dos correios.

Nesse exemplo, iremos utilizar o Visual Studio 2017 Community Edition para criar nosso primeiro teste, pois é a linguagem de programação que estou mais habituado.

Instalando o Visual Studio Community 2017

Para instalar o Visual Studio Community 2017 basta seguir esse tutorial disponibilizado pela própria Microsoft:

Criando o projeto de teste

Para esse exemplo, utilizaremos um projeto do tipo Console Application (.NET Framework). Siga os passos abaixo para criá-lo.

  1. Abra o Visual Studio Community 2017;

  2. Selecione o menu Arquivo / Novo / Projeto;

  3. Selecione o tipo de projeto Aplicativo de Console (.NET Framework) e defina um nome para seu projeto e onde deseja salvá-lo.

    Console Application

Instalando o Selenium Webdriver através do Nuget

Após a criação de nosso projeto seguindo os passos acima é necessário instalar o Selenium Webdriver para que possamos iniciar o processo de automação. Para isso, é necessário instalar 3 plugins do Selenium:

Selenium.WebDriver: é a biblioteca do próprio WebDriver que irá permitir a execução de nossos testes.

Selenium.WebDriver.ChromeDriver: é a biblioteca que permitirá instanciar um objeto do tipo driver que fará o reconhecimento de nossos objetos e executar as respectivas ações.

Selenium.Support: é uma biblioteca de suporte que faz com que seja possível trabalhar com dropdowns, por exemplo.

A instalação do Selenium pode ser realizada de duas maneiras:

Utilizando o Package Manager Console (linha de comando);

Utilizando o Nuget Package Manager (interface gráfica);

Ao final do processo de instalação, o Visual Studio criará o arquivo packages.config onde podemos verificar que todos os componentes foram instalados com sucesso.

Instalação através da linha de comando

No Package Manager Console, é necessário executar os três comandos abaixo para efetuar a instalação:

Install-Package Selenium.Webdriver

Install-Package Selenium.Webdriver.ChromeDriver

Install-Package Selenium.Support

Instalação através da interface gráfica

Para realizar a instalação via interface gráfica é necessário acessar o menu Ferramentas / Gerenciador de Pacotes do Nuget / Gerenciar Pacotes do Nuget para a Solução…

Na janela aberta, na aba “Procurar” buscar pelas bibliotecas que deseja instalar.

Automatizando o primeiro teste

Segue abaixo código fonte completo com cada linha comentada explicando o que está sendo feito. O mesmo código pode ser encontrado em nosso github através da URL abaixo:

https://github.com/testesautomatizados/SeleniumWebDriver/tree/master/SeleniumWebDriverTutorial 

Para capturar o XPath de um campo, utilizando o Google Chrome é necessário seguir os passos abaixo:

  1. Abrir o Developer Tools pressionando a tecla F12;
  2. Clicar no botão “Select an object in the page to inspect it”;
  3. No elemento selecionado, clicar com o botão direito e escolher a opção “Copy XPath”.
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
using System;

namespace SeleniumWebDriverTutorial
{
    class Program
    {
        static void Main(string[] args)
        {
            // Instancia um objeto do tipo driver que é utilizado para interagir com navegador
            // Nesse caso iremos utilizar o Google Chrome para executar nossas ações
            var driver = new ChromeDriver();

            // Define qual URL será chamada e o método .Navigate é responsável por abrir a URL
            driver.Url = "http://www.buscacep.correios.com.br";
            driver.Navigate();

            // Utiliza XPath para reconhecer o campo "Endereço ou CEP" da tela
            // O comando SendKeys é responsável por digitar o valor 20271-130 nesse campo
            driver.FindElementByXPath("//*[@id='Geral']/div/div/span[2]/label/input").SendKeys("20271-130");

            // Utiliza XPath para reconhecer o campo "CEP de:"
            var tipoCEP = driver.FindElementByXPath("//*[@id='Geral']/div/div/span[3]/label/select");

            // Instancia um objeto da classe SelectElement que é utilizado para interagir com um campo do tipo DropDownList
            var tipoCEPDropDown = new SelectElement(tipoCEP);

            // Seleciona o valor "Localidade/Logradouro" no campo "CEP de:"
            tipoCEPDropDown.SelectByText("Localidade/Logradouro");

            // Executa o método Click() para clicar no botão Buscar
            driver.FindElementByXPath("//*[@id='Geral']/div/div/div[6]/input").Click();

            // Nessa parte verificamos o resultado de nosso teste
            // Para isso, identificamos via XPath o valor da coluna "Logradouro/Nome" na página de resultados
            // E comparamos o resultado com nosso valor esperado, ou seja, "Avenina Presidente Castelo Branco"
            if (driver.FindElementByXPath("/html/body/div[1]/div[3]/div[2]/div/div/div[2]/div[2]/div[2]/table/tbody/tr[2]/td[1]").Text
                .Contains("Avenida Presidente Castelo Branco"))
            {
                // Caso o resultado seja verificado imprime no console o valor "OK"
                Console.WriteLine("OK");
            }
            else
            {
                // Caso o resultado seja diferente do valor esperado imprime no console o valor "ERRO"
                Console.WriteLine("ERRO");
            }

            // Fecha o navegador e executa o Disponse() do objeto driver
            driver.Quit();
        }
    }
}

 

Deixe uma resposta

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