Primeiras aulas do curso Selenium WebDriver e C# parte 2: Outros recursos

Selenium WebDriver e C# parte 2: Outros recursos

Elementos invisíveis - Introdução

Seja bem vindo de volta à Parte 2 do curso de Selenium WebDriver, nessa parte eu quero discutir algumas situações específicas, que você com certeza vai encontrar no seu dia a dia, como que WebDriver pode nos ajudar quando essas situações aparecem? O que fazer quando isso acontece?

Por exemplo, elementos ficam visíveis só depois que você faz algum tipo de interação. Então ele não está visível de primeira, você precisa mover o mouse, posicionar o mouse, fazer um hover, alguma coisa assim.

Outra situação é formulários complexos, que tem TextArea, tem Select, tem input com type checkbox, input com type file, como que isso no WebDriver trabalha, lida com esse tipo de elemento.

Outra situação, a gente vai pegar site cujos Framework, CSS, JavaScript, alguma coisa, vai fazer com que os elementos que a gente quer, desejados para a gente poder fazer o teste, ou estejam escondidos, ou estejam armazenados em locais diferentes, embaixo de uma porção de DIV e tudo mais, como a gente lida com esse tipo de situação.

Outra situação é, às vezes a gente precisa ficar esperando algum tempo, para o nosso Assert funcionar, carregar uma página, algum elemento aparecer, o Java script rodar lá no servidor, via AJAX, alguma coisa assim, o que a gente pode fazer nessa situação?

Tudo isso com um problema de que, quanto mais testes, mais complicado o nosso código de teste vai ficar. Então a gente precisa continuar se preocupando com organização e limpeza de nosso código de teste, a gente vai melhorar os nossos Page Object.

Outra situação que acontece é que você precisa, às vezes, testar algum valor dentro de uma tabela, uma coluna, uma linha, o que eu posso fazer com o Selenium WebDriver quando isso acontece? E, também, sites cujos atributos de elementos são gerados dinamicamente, que recurso que a gente pode usar para poder fazer isso?

Por fim, a gente também vai verificar cenários que exigem configurações específicas no nosso navegador, a gente precisa configurar o nosso navegador, segundo alguma configuração, para rodar nosso teste, o cenário depende dessa configuração.

Sem muita delonga, vamos partir para o primeiro vídeo da primeira aula. Te espero lá.

Elementos invisíveis - Fazendo logout

Pessoal, vamos continuar os nossos testes. Agora eu quero testar, no último vídeo, lá na última aula da Parte 1, a gente estava testando o login, para poder fixar o conceito lá de Page Object e tudo mais. A gente fez o teste no login, agora eu quero testar o logout.

Aqui eu tenho o teste do login, vou entrar com um usuário válido, para poder entrar naquela página do dashboard, estou entrando aqui, tem a dashboard aqui, lembrando para vocês que, vocês tem que fazer o download do projeto inicial para essa parte 2, porque é diferente, tem esse formulário de pesquisa, que na Parte 1 não tem, mas estamos aqui no dashboard de pessoas interessadas no leilão, depois que faz o login.

O que eu quero testar agora é o seguinte, entrei no dashboard de interessados, eu quero fazer um logout, vamos fazer esse teste? Vou criar uma classe de teste, vou usar o nome "AoEfetuarLogout", vou remover os meus spaces que não estão sendo utilizados, e vou colocar alguns, já pode me adiantar. Eu vou colocar do Selenium e do Xunit, vou aumentar a visibilidade dessa classe, e vou fazer aquela estrutura básica.

Vou guardar o WebDriver e vou criar um construtor que vai receber uma "TestFixture", lembram que agora a gente já compartilha o contexto desses testes, eu esqueci de adicionar esse namespace lá em cima, e vou guardar o driver que está na fixture, então eu criei uma estrutura básica.

Mas para poder usar essa "fixture", para poder compartilhar o contexto dessa fixture, eu tenho que dizer que essa classe está dentro daquela mesma coleção, "Chrome Driver", essa é a estrutura básica para a gente começar uma nova classe de teste.

Eu vou fazer, aqui, um método de teste "public void DadoLoginValidoDeveIrParaHomeNaoLogada", eu criei um método que vai representar esse cenário de teste, dado login válido, ao efetuar o logout, deve ir para a Home não logada. O nosso "arrange" vai ser, estou ruim de escrever hoje, eu vou criar aqui o Page Object para esse login, "loginPO".

Precisa adicionar lá em cima, passando o driver como argumento, depois disso eu vou visitar a página de login e eu vou fazer o meu login, vou preencher primeiro o formulário, na verdade, com a senha supersecreta "123", depois eu vou fazer o login, "SubmeteFormulario".

Naveguei para página login, preenchi o formulário, submeti o formulário, agora eu devo estar na página de dashboard. Agora na página de dashboard eu vou precisar fazer o logout, então eu vou deixar aqui "efetuar logout".

E meu assert será "Assert.Contains("Próximos Leilões")", eu sei que próximos leilões é, justamente, uma das coisas que nós temos na página não logada, "Assert.Contains("Próximos Leilões", driver.PageSource)", então criei meu teste aqui, eu não tenho ainda o Page Object do dashboard dos interessados e é isso que a gente vai fazer no próximo vídeo.

Elementos invisíveis - Page Object do Dashboard

Vamos criar o Page Object do dashboard de interessados, o que eu quero, no final das contas, é criar um objeto "dashboardPO = new DashboardInteressadaPO", passando o driver como argumento de entrada, eu vou criar uma classe que tenha este nome, vou criar aqui na minha pasta "Page Objects", colocar o nome "DashboardInteressadaPO", vou colocar a visibilidade como pública, vou importar o namespace de Selenium, para poder receber o WebDriver, "IWebDriver".

Vou usar, aqui, o meu Visual Studio, para gerar o construtor que injete o WebDriver, criamos essa classe, o que ela vai fazer? Eu vou passar esse cara para cá, porque esse aqui não é o action, qual é a action? A action é a "dashboardPO.EfetuarLogout", o método não existe, vamos criar.

Eu vou criar esse método aqui, "EfetuarLogout", para efetuar logout o que eu vou precisar? Vou precisar capturar esse elemento aqui, deixa eu entrar novamente, "fulano@exemple.org", senha "123", sempre quando vocês forem mapear o "PO", vocês têm que entrar e alisar o HTML, sempre vai ser essa ideia.

Qual é a HTML que eu quero capturar, aqui, no meu PO? Eu tô querendo capturar esse link aqui, se eu clicar com o botão direito, eu tenho um link cujo ID é "logout". Então, "mamão com açúcar", eu vou criar um locator, "private", classe "by", "byLogoutLink", criei esse campo e, aqui no Construtor, eu já vou inicializar esse cara, usando "By.Id("Logout")".

Agora, aqui, eu vou dar um "driver.FindElement(byLogoutLink).Click", pronto, vou clicar nesse link de logout, eu vou ter feito o logout. Então, efetuar logout é exatamente isso, e eu vou verificar se eu já estou na página, na home não logada, e verificar se o texto "Próximos Leilões" vai aparecer no Page Source.

Vamos testar isso aqui, botão direito, "Executar testes", vai criar PO de login, vai passar pelo login, vai fazer o login e funcionou, não funcionou, vamos ver o que vai acontecer aqui, "Gerenciador de Testes" e eu acho que deu problema gente, efetuar logout deu problema, estranho, "element not interactable", não foi possível interagir com esse elemento, por que?

A gente teve esse erro aqui e é, justamente, o erro que tá acontecendo no nosso link, no link que a gente tentou buscar, só para confirmar, vamos ver o StackTrace, o StackTrace foi eu chamei o método de teste "DadoLoginValidoDeveIrParaHomeNaoLogada", chamou, depois, quando chegou no efetuar logout, deu erro nessa linha aqui, qual é o problema?

O problema é que o elemento não é possível de ser fazer interações com ele, o problema gente, que está acontecendo, é um problema comum que vocês vão encontrar, também, quando vocês estiverem trabalhando com o Selenium WebDriver, é que, esse elemento não está visível, o Selenium WebDriver não funciona, você não consegue trabalhar com o Find Element para elementos que não estão visíveis.

Sobre o curso Selenium WebDriver e C# parte 2: Outros recursos

O curso Selenium WebDriver e C# parte 2: Outros recursos possui 184 minutos de vídeos, em um total de 61 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!

  • 1269 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

  • 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

  • 1269 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

  • 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

  • 1269 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

  • 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

  • 1269 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

  • 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
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas