Primeiras aulas do curso Selenium WebDriver e C# parte 1: Primeiros passos

Selenium WebDriver e C# parte 1: Primeiros passos

Iniciando o uso do Selenium - Introdução

Testador, tudo bem? Você já me conhece, meu nome é Daniel Portugal, a gente já se conheceu no curso de testes de unidade, com C# e o Xunit, e agora nós estamos de volta para aprender outros tipos de testes de automatizados, que são os testes de interface do usuário e, para isso, a gente vai usar o Selenium WebDriver, continuando a usar o Xunit, também, eu quero, aqui, apresentar um pouquinho, rapidamente, tanto a parte 1, quanto a parte 2, do curso, então lembre-se disso, eu tô falando aqui da parte 1 e da parte 2.

Parte 1, a gente vai ver o básico do Selenium WebDriver, o que a gente precisa para poder automatizar nossos testes com essa ferramenta? A gente precisa conhecer o principal, tem que dar o nome a essa ferramenta, o WebDriver, preciso entender que, os elementos HTML, você vai interagir através de uma interface, que é o IWebElement, e precisa, justamente, para poder pegar esses elementos, precisa conhecer a estratégia de localização, essa é a primeira parte, de uma forma muito resumida.

A Parte 2, a gente vai começar a ver situações mais complexas, situações que a gente vai se separar no nosso dia a dia, onde a gente vai ter que dar um jeito e usar outros recursos do Selenium WebDriver, para poder resolver, no final, a gente vai ter, vocês vão ver 19 testes, e eu vou mostrar para vocês esses testes sendo executados, para vocês terem uma ideia do que vocês vão aprender aqui, claro que o teste vai rodar muito rapidamente, vocês não vão ver direito, mas acho que dá para dar uma ideia das situações que a gente vai apresentar.

Qualquer coisa dá um pause no vídeo, nós temos o navegador abrindo, formulários sendo preenchidos, funcionalidades sendo testadas, nesse caso aqui, agora, é uma AJAX que tá rodando, nós estamos esperando o AJAX acontecer, os testes foram todos executados em 20 segundos, 19 testes, passando por várias situações, várias funcionalidades, do nosso sistema, que o sistema de leilões, aquele sistema do curso anterior.

Para isso, a gente vai, também, aprender a criar um novo projeto aqui, a gente vai criar um novo projeto no Selenium e a gente vai continuar tentando usar as melhores práticas na escrita de nosso código de teste, a gente vai aprender como compartilhar um determinado recurso, o recurso que é mais caro, que no caso é o navegador, como a gente compartilha esse recurso, por todos os testes, de várias classes diferentes, a gente vai conhecer as Fixtures, as Collections Fixtures do Xunit.

A gente vai isolar determinados problemas em classes Helpers, a gente vai conhecer o padrão PageObject, que é usado para você encapsular determinado comportamento, determinada região de interface do usuário e, como sempre, a gente vai continuar reforçando a ideia de escrever os nossos testes usando o padrão "arrange", "act" e "assert", então, se você ficou curioso, quer aprender sobre o Selenium WebDriver, vem comigo, para o próximo vídeo.

Iniciando o uso do Selenium - Preparando o ambiente

Segue o download do projeto inicial.

Nesse curso a gente vai testar o nosso sistema de leilões, que agora, nós evoluímos para uma aplicação web, no curso anterior, a gente só usou uma biblioteca de classes e criou nossas classes todas de leilões, nessa biblioteca de classes, agora a gente evoluiu e criou, também, uma aplicação web, a gente vai testar aplicação web, usando o Selenium WebDriver, o que eu preciso para poder começar a fazer meus testes, na sua máquina e na minha máquina?

Primeiro, vocês vão fazer o download de um zip que está na transcrição, vocês vão extrair esse Zíp, essa solução, para alguma pasta que vocês queiram aí, eu vou extrair, a solução tá lá, vou abrir essa solução, usando o Visual Studio, deixa eu colocar aqui, "Documentos", "Projects", então, está aqui a solução que eu extrai, "Selenium.Tests", e eu vou abrir esse cara, usando o Visual Studio 2017.

Só para mostrar para vocês uma coisa, meu Visual Studio, sua versão é a 15.9.11, neste momento é a versão mais atual do Visual Studio 2017, provavelmente, daqui a pouco, isso já vai mudar, nós já temos o Visual Studio 2019, mas para esse curso a gente não precisa de outros recursos, nós vamos usar essa versão aqui do Visual Studio Community 2017.

Outra coisa importante, também, é que você precisa ter instalado na sua máquina, o ".net Core 2.2", se você abrir a sua solução, pega um projeto da solução, botão direito, "Propriedade" e, quando aparecer aqui, na "Estrutura de destino", ou "Target Framework", se você estiver usando o Visual Studio com o idioma em inglês, se aqui estiver vazio, significa que você não instalou, não tem instalado, o ".net Core 2.2", o que eu tenho que fazer?

Eu tenho que clicar aqui, nesse link, instalar outras estruturas, você vai chegar nessa página da Microsoft, vai rolar um pouquinho e, aqui embaixo, tem o ".net Core 2.2", para o Visual Studio 2017, você vai pegar o link, o executável, para sua máquina, se for 64 bits, esse cara aqui, senão esse cara aqui, instala esse Visual Studio e tudo deve estar funcionando.

Está aqui a nossa aplicação, eu vou dar uma compilada, "Ctrl+Shift+B", para ver se tá tudo bem, compilou, todos os nossos projetos estão compilando, na versão anterior do curso, nós tínhamos "Alura.LeilãoOline.Core", que é o domínio da nossa aplicação, e "Alura.LeilãoOnline.Tests", onde a gente colocou os testes unitários, falei, agora, no vídeo anterior, a diferença entre testes unitários e testes de interface do usuário.

Agora nós temos mais dois projetos, um projeto para fazer a persistência do leilão, aqui "Alura.LeilãoOnline.Dados", e um projeto que é, definitivamente, a aplicação Web, vamos tentar rodar, não vamos conseguir ainda, porque o banco de dados ainda não foi criado, então, o que nós temos que fazer?

Para quem fez os cursos, entende de Entity Framework Core, eu não tenho muito o que fazer, tenho que rodar apenas um script, um comando, no nosso console, a primeira coisa que eu vou fazer, eu vou definir esse projeto, como projeto de inicialização, se já não estiver feito, aqui eu tô garantido, ele ficou em negrito.

Eu vou abrir, deixa eu ver, "Ferramentas", "Gerenciador de Pacotes do NuGet", "Console do Gerenciador de Pacotes", abri esse cara aqui, garanta que você está com um projeto WebApp, aqui, "Projeto Padrão", e aqui também, projeto de inicialização WebApp, só para vocês verem, eu vou exibir aqui, SQL Server Object Explorer, explorador de objetos do SQL Server, vou abrir meu banco local do SQL Server Express, e vou olhar aqui, eu não tenho nenhum banco definido.

Eu preciso criar um banco de dados, aqui, chamado "LeiloesDB", onde vai ter a estrutura de tabelas da minha aplicação de sistema de leilões e, também, alguns dados que eu vou usar para teste, tudo isso vai ser feito com esse comando, que eu vou executar agora, não sei se vocês lembram, mas eu quero fazer um "Update-Database", vamos rezar para sair tudo certinho.

Ele vai olhar para aquele projeto de dados, vai conseguir chegar lá e vai descobrir que existe um contexto do Entity Framework Core, lá naquele pacote de dados, vai olhar para as migrações que estão ali dentro, vai rodar as migrações, até a última migração, vai criar toda estrutura de tabelas, inclusive, vai colocar alguns dados iniciais, para a nossa aplicação subir certa, com leilões e tudo mais, se eu der um Refresh aqui nesse banco de dados, Refresh, agora nós temos uma tabela, um banco de dados, chamado "LeiloesDB".

Eu já consigo rodar a minha aplicação, vou fazer um "Ctrl+F5" ou então, você pode depurar, "Iniciar sem Depurar", "Ctrl+F5", a nossa aplicação vai subir, provavelmente, quando for rodar pela primeira vez, vai ter um anúncio, um aviso de https, para confiar no certificado do "asp.net Core", você vai clicar "Ok", porque essa aplicação está sendo servida, também, no https, você aceita, agora nós vamos, "localhost:5000", vou apertar "Enter" aqui, e vou navegar para página inicial da minha aplicação de leilões.

Essa aqui é a página inicial, onde o usuário não está logado, reparem que existe um menu de login e tem algumas coisas aqui, para você ver os leilões, navegar pelas categorias de leilão, enfim, registrar, tem o rodapé, isso aqui faz parte do leilão, do sistema de leilões, e a gente vai começar a explorar isso, a partir de agora, a gente vai começar a testar várias partes da nossa aplicação.

fica comigo, faça os exercícios, prepare a sua máquina, o seu ambiente, para a gente começar, na próxima aula, a todo vapor.

Iniciando o uso do Selenium - Selenium Webdriver

Imaginem o seguinte, lá no curso anterior, que a gente colocou um pré-requisito, curso de TDD, Xunit e C#, a gente testou as classes e métodos, então, a gente testou, diretamente o código fonte, que nós estávamos escrevendo, usando, inclusive, o TDD, para fazer os testes primeiro e ajudou, inclusive, no design das nossas classes, dos nossos métodos.

Agora, eu pergunto para vocês, e se eu não tiver o código, a única coisa que eu tenho para poder testar, é o site, é o resultado final, é a interface com o usuário? Como que eu faço? Será que é possível testar, será que é possível automatizar esses testes?

A gente vai ver o seguinte, vamos criar um teste aqui, agora, usando aquele mesmo conhecimento que a gente teve no curso anterior, aquele padrão "arrange", "act" e "assert", estou até colocando um slide para vocês verem, dentro do padrão "arrange", "act" e "assert", vamos ver se a gente consegue criar um teste, para testar a página da Caelum, por exemplo.

Cenário inicial, as condições de entrada, "Dado que estou com navegador aberto", condição boba, simples, "Quando eu navego para a URL www.caelum.com.br", a minha expectativa é que a página da Caelum seja apresentada, não a página da Alura, não a página da Caso do Código, ou uma outra página qualquer, eu quero a página da Caelum, eu tô verificando a URL, com relação a página, então, vou fazer esse teste aqui, usando um teste manual.

Navegador tá aberto, quando eu navego para a página da Caelum, dá um Enter aqui, a minha expectativa foi atendida nesse caso, mas como eu faço isso usando C#? Vamos lá, vou abrir, aqui, no Visual Studio, vou criar um novo projeto do tipo Xunit Teste, plataforma ".NET Core", não vou mexer no nome do projeto, porque a gente vai apenas usar esse projeto como exemplo, para testar, incluir e mostrar para vocês, como a gente faz, para automatizar os testes de interface do usuário, dá um "Ok" aqui.

Ele vai criar para gente esse plano de testes, já com um teste, do tipo "Fact", e eu vou trazer para cá, aquele "arrange", "act" e "assert", vou colocar aqui, trouxe para cá o "arrange", "act" e "assert", agora vamos ver como a gente faz o código, para simular esse cenário de teste aqui, a gente vai ver que a gente vai usar o Selenium WebDriver.

A primeira coisa, para representar o navegador, a gente vai usar uma interface chamada IWebDriver, essa é a interface do Selenium para isso, então, para isso, eu preciso instalar o Selenium no meu projeto, pacote do Selenium.

Vamos, aqui, em "Gerenciador de Soluções", "Dependências", "Gerenciador de Pacotes do NuGet" e, em "Procurar", vou escrever "Selenium.WebDriver", tava até aqui, vou instalar esse cara, vou apertar o "Ok", vou aceitar os termos da instalação, lembrando que a gente precisa da internet para poder fazer essa instalação, aceitar os termos, agora, já tenho esse cara no meu projeto, só que eu ainda tenho que usar, importar o Namespace do Selenium, que é "OpenQA".

Agora, eu já tenho, disponível aqui para mim, essa interface IWebDriver, vou chamar um objeto dessa interface de driver, uma variável, tô criando uma variável para isso, agora, eu preciso de um objeto que implemente essa interface IWebDriver, se nós estamos criando um navegador, quais são os tipos de navegadores que nós temos disponíveis?

Chrome, Firefox, Edge, Opera, outros mil, então nós vamos pegar um desses caras, que implementam essa interface IWebDriver, vamos escolher o Chrome, eu tenho aqui o "ChromeDriver", esse cara está sendo ainda reconhecido, porque eu preciso importar, "Ctrl+.", o Namespace específico do "ChromeDriver", agora, com esse código aqui, eu estou, teoricamente, abrindo, criando uma nova janela de navegador, para eu fazer os meus testes, vamos para o próximo passo.

O segundo passo é, navegar para a URL, o objeto driver, que é do tipo IWebDriver, tem um método chamado "Navigate", e eu tenho um outro método chamado "GoToUrl", eu vou pegar, justamente, essa URL, aqui, que é do tipo String, o meu WebDriver tem um objeto chamado "INavigation", que eu obtenho através desse método "Navigate", eu crio uma instância desse objeto "Navigate", para que eu possa fazer várias operações de navegação.

Não preciso apenas navegar através de URL, para uma URL, eu posso navegar usando o botão "Back", o botão "Foward", eu posso fazer navegação de várias maneiras diferentes, por isso que eu tenho esse objeto "INavigation", que está associado ao WebDriver, nesse caso, estamos querendo navegar para a URL, essa é a ação de teste que eu tô querendo aqui, em seguida, eu vou fazer as minhas verificações de expectativa, qual é a minha expectativa aqui?

Que a página, que seja apresentada depois que eu naveguei, seja a página da Caelum, como eu testo isso? Um exemplo que eu to pensando é, o título do navegador agora vai conter a palavra Caelum, eu vou fazer "Assert.Contains", onde eu vou passar a palavra Caelum e eu vou dizer que, eu vou procurar essa palavra Caelum, dentro do título do meu navegador, escrevi o meu teste, vamos executar, pra a gente poder ver, se tá faltando alguma coisa para resolver aqui.

Eu vou executar o meu teste, deixa eu fixar o meu "Gerenciador de Testes", eu tive um erro aqui no teste, vamos ver por que, está dizendo aqui que o driver, o ChromeDriver, não foi encontrado no diretório do teste, o que tá acontecendo aqui? É que eu preciso apontar nessa criação aqui, do "ChromeDriver", eu preciso apontar para qual pasta está aquele arquivo "chromedriver.exe".

A pasta é, justamente, onde está rodando o teste, o Assembly, eu vou mostrar para vocês, abri a pasta, cliquei aqui em "Gerenciamento de Soluções", vamos fixar esse cara aqui, botão direito, no projeto, "Abrir Pasta no Navegador de Arquivos", a pasta está aqui, a pasta onde esse teste está executando é "bin", "Debug", "netcoreapp2.1" e, aqui, dentro desta pasta, deveria estar o "chromedriver.exe", que é a implementação deste navegador, desse driver para o Chrome.

Ele não tá aqui, porque eu preciso instalar, também, esse cara via NuGet, aqui no Visual Studio, NuGet, deixa eu fechar aqui um pouquinho, posso fechar tudo, aqui eu vou colocar o "driver.Chrome", ele vai pegar para mim, eu vou selecionar, na verdade, o nome do pacote é "Selenium.Chrome.WebDriver", que é a implementação desse cara para a gente, vou instala-lo, aceitar, não precisou, está restaurando aqui embaixo, deixa eu ver, agora eu vou voltar lá para aquele diretório, o diretório ainda não contém o meu ChromeDriver.

Acho eu preciso compilar aqui, compilei, compilei a minha aplicação e, agora, olhem o que eu tenho aqui, "chromedriver.exe", eu acho que, agora, se eu executar, novamente, o meu teste, eu não vou conseguir, porque? Porque eu preciso dizer qual é a pasta, onde está esse bendito "chromedriver.exe", vamos escrever, vamos passar, agora, como argumento desse construtor, a pasta onde está o meu "chromedriver.exe".

Eu vou usar a API I/O do Get.NET, "Path", "Ctrl+.", "GetDirectoryName", de quem? Da DLL que foi gerada para esse projeto de teste, como é que eu obtenho a DLL, o nome da DLL com a localização desse arquivo, esse DLL, eu vou usar "Assembly", "Ctrl+.", "using System.Reflection", "GetExecutingAssembly", que é a DLL que está sendo executada e, daqui, eu vou pegar a localização desse cara, eu tô pegando a localização da DLL que está sendo executada e estou pegando o "Directory", o nome do diretório dessa localização.

Eu vou, novamente, cruzar os dedos e testar isso, para a gente ver se tá tudo certinho, executar tudo, na verdade, só tem uma coisa para testar, vamos ver, olhem que diferente, agora já apareceu o navegador, o Chrome, ele navegou para aquela URL e ele foi, e deve ter feito, o assert da expectativa, vamos ver aqui, agora o teste passou, significa que essa assertiva aqui, essa expectativa, foi atendida, existe dentro do "title", no navegador, a palavra Caelum.

Agora, a gente vai começar a melhorar o nosso conhecimento, vai aprofundar o nosso conhecimento do Selenium WebDriver nos próximos áudios, espero você nos próximos vídeos.

Sobre o curso Selenium WebDriver e C# parte 1: Primeiros passos

O curso Selenium WebDriver e C# parte 1: Primeiros passos possui 161 minutos de vídeos, em um total de 57 atividades. Gostou? Conheça nossos outros cursos de .NET em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda .NET acessando integralmente esse e outros cursos, comece hoje!

  • 1206 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1206 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1206 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1206 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?

Acesso completo por 1 ano

Estude 24h/dia onde e quando quiser

Novos cursos todas as semanas