Olá, testadores! Boas vindas à segunda parte do Curso de Selenium WebDriver. Aqui, discutiremos situações específicas que são encontradas no dia a dia e as resoluções que o Selenium nos disponibiliza.
Por exemplo, o que fazer quando elementos ficam visíveis só após ação do usuário? O que fazer quando precisamos interagir com elementos em formulários complexos?
Os formulários complexos são esses que possuem área de texto, select, input do type checkbox e input com type file. Veremos como o WebDriver lida com esses elementos.
Além disso, lideramos com casos em que o Framework, como CSS/Javascript, fazem com que os elementos desejados para o teste fiquem escondidos ou armazenados em locais diferentes, embaixo das opções de divs.
Aprenderemos o que fazer quando os asserts só são atendidos após uma certa espera. Lidaremos com tudo isso combinado ao fato de que quanto mais testes fazemos, mais complicado o código se torna. Ou seja, continuaremos nos preocupando com a organização e limpeza do código de testes. Para isso, melhoraremos nossos PageObjects.
Outra situação recorrente é que às vezes precisamos testar valores dentro de uma tabela, coluna ou linha. E sites cujos atributos de elementos são gerados dinamicamente. Por fim, verificaremos cenários que exigem configurações específicas em nosso navegador.
Sem mais delongas, vamos partir para o primeiro conteúdo da primeira aula. Espero vocês lá!
Vamos continuar nossos testes! Na última aula da Parte 1 do curso, testamos o Login para fixarmos o conceito de Page Object. Agora, testaremos o Logout.
Já conseguimos entrar NO Dashboard com um usuário válido. Lembrem-se que é preciso fazer o download do projeto inicial porque existem algumas diferenças deste projeto em relação ao usado na primeira parte do curso. Dentre elas, o formulário "Pesquisar Leilões" localizado canto direito da página Dashboard de pessoas interessadas no leilão.
Para o teste de Logout, vamos criar uma classe de teste com o nome "AoEfetuarLogout" do Visual Studio. Removeremos os namespaces que não estão sendo utilizados e adicionar alguns como Xunit
e OpenQA.Selenium
para nos adiantarmos.
using xUnit;
using OpenQA.Selenium;
using Alura.LeilaoOnline.Selenium.Testes;
namespace Alura.LeilaoOnline.Selenium.Testes
{
class AoEfeuarLogout
{
}
}
Vamos aumentar a visibilidade da classe AoEfeuarLogout
para public
e adicionar a estrutura básica de IWebDriver
guardado como private
. Criaremos o constructor AoEfeuarLogout()
que receberá uma TestFixture
já compartilhando o contexto desse teste. Por fim, guardamos o driver
que está na fixture
.
Para podermos usar essa Fixture e compartilhar seu contexto, precisamos dizer que essa classe está dentro da coleção "Chrome Driver"
.
namespace Alura.LeilaoOnline.Selenium.Testes
{
[Collection("Chrome Driver")]
public class AoEfetuarLogout
{
private IWebDriver driver;
public AoEfetuarLogout(TesteFixture fixture)
{
driver = fixture.Driver;
}
}
}
Essa é a estrutura básica para começarmos uma nova classe de teste. Vamos adicionar um método de teste public void
com nome DadoLoginValidoDeveIrParaHomeNaoLogada()
.
[Fact]
public void DadoLoginValidoDeveIrParaHomeNaoLogada()
{
}
Para esse Login, criaremos o seu Page Object, loginPO
. Nele, passaremos o driver
como argumento. Em seguida, vamos Visitar()
, preenchemos o formulário PreencherFormulario()
com o login `fulano@example.orge senha
123. Submetemos esse formulário por meio de
SubmeteFormulario()`.
var loginPO = new LoginPO(driver);
loginPO.Visitar();
loginPO.PreencherFormulario("fulano@example.org", "123");
loginPO.SubmeteFormulario();
Navegamos para a página de Login, preenchemos e submetemos o formulário e agora já devemos estar na página de Dashboard. O próximo passo é deslogarmos dela.
Para isso, nosso assert será Assert.Contains("Próximos Leilões", driver.PageSource)
pois sabemos que "Próximos Leilões" é um dos elementos que temos na página não-logada.
Criamos o teste, mas ainda não temos o Page Object do Dashboard de interessados e é isso que faremos no próximo vídeo.
Agora criaremos o Page Object da Dashboard de interessados. Afinal, queremos criar um objeto dashboardPO
igual a new DashboardInteressadaPO()
passando o driver
como argumento de entrada.
var dashboardPO = new DashboardInteressadaPO(driver);
Em seguida criaremos uma classe que tenha esse mesmo nome em "PageObject > Adicionar > Classe". Vamos deixar a visibilidade como pública. Importaremos o namespace do Selenium para poder receber o IWebDriver
. E usaremos o Visual Studio para gerar os construtor que injete o WebDriver.
using OpenQA.Selenium;
namespace Alura.LeilaoOnline.Selenium.PageObjects
{
public class DashboardInteressadaPO
{
private IWebDriver driver;
public DashboardInteressadoPO(IWebDriver driver)
{
this.driver = driver;
}
}
}
De volta a "AoEfetuarLogouts" a action será dashboardPO.EfetuarLogout()
. Esse método precisa ser criado em "DashboardInteressadaPO". Criarmos ele como um método público.
public void EfetuarLogout()
{
}
Sempre que vocês forem mapear o PO, é preciso analisar o HTML com calma. Neste caso, queremos capturar o link de "Logout" da página de interessados. Portanto, voltamos a ela e em "Logout" clicamos com o botão direito do mouse, uma lista de ações se abrirá e selecionaremos o último item que é "Inspecionar". Ao fazer isso, teremos acesso ao id
desse link, que nesse caso élogout
.
Voltando ao Visual Studio, em "DashboardInteressadaPO", vamos criar um locator private
da classe By
para o byLogoutLink
.
private By byLogoutLink;
No construtor, inicializaremos o byLogoutLink
usando o By.id()
recebendo o logout
, que encontramos no "Inspecionar" o HTML.
public DashboardInteressadoPO(IWebDriver driver)
{
this.driver = driver;
byLogoutLink = By.id("logout")
Em public void EfetuarLogout()
vamos sar o driver.finElement()
recebendo o byLogoutLink
e .Click()
.
public void EfetuarLogout()
{
driver.FindElement(byLogoutLind).Click()
}
Clicamos no link de logout e depois em "AoEfetuarLogout" verificamos se estamos na Home não logada pelo assert.
Assert.Contains("Próximos Leilões, driverPageSource);
Podemos testar esse código, clicando em DadoLoginValidoDeveIrParaHomeNaoLogada()
com o botão direito do mouse e selecionar "Executar teste". O teste é executado, mas "AoEfetuarLogout" deu problema. porque não foi possível interagir com o elemento da linha driver.FindElement(byLogoutLind).Click()
.
Esse elemento não está visível, o que é um problema comum de encontrar quando trabalhamos com Selenium WebDriver. Quando isso acontece, não conseguimos trabalhar com o FindElemente()
.
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:
Mais de 1500 cursos completamente atualizados, com novos lançamentos todas as semanas, emProgramação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.
Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.
Emitimos certificados para atestar que você finalizou nossos cursos e formações.
Mais de 1500 cursos completamente atualizados, com novos lançamentos todas as semanas, emProgramação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.
Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.
Emitimos certificados para atestar que você finalizou nossos cursos e formações.
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com Luri até 100 mensagens por semana.
Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.
Acesso completo
durante 1 ano
Estude 24h/dia
onde e quando quiser
Novos cursos
todas as semanas