O que são?
Os testes automatizados com Selenium no TestFlow são executados através de Atividades C#, com um template C# específico já disponível para simplificar a integração e execução do Selenium diretamente no TestFlow.
Para que serve?
Eles ajudam a garantir que aplicações web funcionem corretamente, permitindo:
- Automação de Testes Funcionais: Simular o comportamento de usuários e verificar se a aplicação responde conforme esperado.
- Testes Regressivos: Reexecutar testes após alterações no código para garantir que novas atualizações não quebrem funcionalidades existentes.
- Eficiência: Reduzir o tempo e o esforço necessários para testar manualmente as funcionalidades de uma aplicação, aumentando a produtividade.
Links Uteis
- Selenium documentação oficial: https://acesse.dev/mJsMb
- Saiba mais sobre os WebDrives: https://encr.pw/bO3RO
Exemplo de Uso
Passos para Criar uma Atividade C# com Selenium
1. Criação da Atividade C#
Criação da Atividade C#:
Crie sua Atividade C# no TestFlow.
- Antes de escrever qualquer código, clique em Carregar Template e selecione o Template Selenium.
2. Desenvolvimento do Teste
Desenvolvimento do Teste
O teste Selenium deve ser implementado dentro do método Test
. Você tem duas opções para organizar os testes:
Atividade com vários testes: Nessa abordagem, você agrupa diversos testes dentro de uma única Atividade C#, onde cada teste é tratado como um passo separado. Isso facilita o controle do progresso da atividade como um todo.
Várias atividades com um teste por atividade: Neste caso, cada atividade C# contém apenas um teste. O WebDriver é instanciado uma vez e adicionado ao contexto, permitindo sua reutilização em outras atividades no mesmo projeto.
3. Boas práticas de Teste
Boas Práticas de Teste
Siga o padrão Arrange, Act e Assert para estruturar seu código de forma clara e fácil de manter:
- Arrange: Prepare o ambiente e os dados necessários para o teste, como configurar o navegador, carregar a página e definir os elementos de teste.
- Act: Execute as ações do teste, como interagir com os elementos da página (clicar em botões, preencher formulários, etc.).
- Assert: Verifique o resultado, validando se as ações realizadas produziram o comportamento esperado (ex.: login bem-sucedido ou exibição correta de uma mensagem).
4. Registro de Resultados e Status
Registro de Resultados e Status
Registro de Resultados e Status:
- Para cada teste, registre o resultado no log:
context.Status.AddStage(int step, string message);
- Defina o status da atividade conforme o resultado de cada teste:
-
- Adicionar alerta em caso de falha:
context.Status.AddAlert(int step, string message);
- Marcar o teste como falhado:
context.Status.SetFailed(string message);
- Concluir a atividade após o último teste:
context.Status.SetCompleted(string message);
- Abaixo está uma imagem que exemplifica a execução de vários testes Selenium dentro de uma única Atividade C#.
4. Exemplo de Organização de Teste
Exemplo de Organização de Teste
- Organize seus testes de forma estruturada, tratando cada teste como um passo dentro da Atividade C#. Assim, cada teste representa uma etapa clara e separada no fluxo da atividade, facilitando o controle e a rastreabilidade dos resultados.
5. Instanciar e Reutilizar o WebDriver no TestFlow
Instanciar e Reutilizar o WebDriver no TestFlow
Para otimizar o uso do WebDriver em suas atividades C#, siga estas etapas:
Instancie o WebDriver uma única vez:
- Ao iniciar a atividade C#, crie o WebDriver apenas uma vez. Isso evita a necessidade de instanciá-lo repetidamente em cada teste, melhorando a eficiência do código.
Adicione o WebDriver ao contexto do TestFlow:
- Após instanciá-lo, adicione o WebDriver ao contexto da atividade, permitindo que ele seja reutilizado por outras atividades ao longo do projeto:
context.Resources.Add(_seleniumManager);
O método context.Resources.Add<T>()
registra o WebDriver como um recurso disponível para todas as atividades subsequentes que fazem parte do fluxo de testes.
Acessar o WebDriver em outras atividades:
- Em qualquer atividade posterior, você pode acessar o WebDriver a partir do contexto do TestFlow, garantindo que o mesmo objeto seja utilizado de maneira eficiente:
var webDriver = context.Resources.OfType<ISeleniumWebDriverManager>().First().Value;
6. Fechamento do WebDrive
Fechamento do WebDriver
Definir o status e conclusão do teste:
Exemplo Prático
Imagine que um analista de TI do sistema RM precise automatizar o processo de login no Portal do Aluno do módulo educacional, garantindo que os alunos possam acessar suas contas e visualizar suas notas de forma confiável. O objetivo dessa automação é validar que o login seja realizado corretamente, verificando se o sistema autentica o aluno com sucesso. Após o login, o teste também deve confirmar se o aluno consegue acessar a área de consulta de notas sem falhas, assegurando que a funcionalidade esteja operando conforme esperado após atualizações ou manutenções no sistema.
Utilização do Selenium no template da Atividade C#
O Helper Selenium foi desenvolvido dentro da engine Selenium do TestFlow com o objetivo de facilitar a criação de testes automatizados. Ele oferece uma série de métodos práticos para instanciar e gerenciar o WebDriver, além de manipular elementos da interface de forma eficiente e precisa.
Esse Helper simplifica todo o processo de automação de testes com o Selenium, fornecendo métodos pré-configurados para:
- Instanciar e configurar WebDrivers.
- Interagir com elementos da interface (como botões, campos de texto e links).
- Controlar o fluxo de navegação em páginas web.
- Gerenciar o comportamento do navegador (como esperar por condições específicas, clicar em elementos e preencher campos).
Métodos do Helper Selenium e suas Funções
1. Instanciar o WebDriver
Instanciar o WebDriver
Instanciar o WebDriver do Chrome com opções:
var options = new ChromeOptions(); options.AddArgument("–incognito"); _seleniumManager.SetupChromeDriver(options);
Instanciar o WebDriver do Chrome de um diretório específico:
_seleniumManager.SetupChromeDriver(@"C:\MeuChromeDriverDiretorio", new ChromeOptions());
Instanciar um WebDriver diferente do Chrome com opções (Exemplo: Firefox):
var firefoxDriver = new FirefoxDriver(new FirefoxOptions()); _seleniumManager.UpdateWebDriver(firefoxDriver);
Atualizar a largura e altura da janela do WebDriver:
_seleniumManager.UpdateWindowSize(1920, 1080);
2. Interação com a Interface
Espera por Elementos
Esperar por um elemento usando By
e um tempo em milissegundos:
_seleniumManager.Wait(By.Id("botao"), 5000);
Esperar por um elemento pelo ID:
_seleniumManager.WaitByElementId("botao", 5000);
Esperar utilizando uma função de expressão e o WebDriver:
_seleniumManager.Wait(drv => drv.FindElement(By.Id("botao")), 5000);
Esperar até que o elemento seja clicável usando ExpectedConditions
:
_seleniumManager.WaitForCondition(ExpectedConditions.ElementToBeClickable(By.CssSelector(selector)), 5);
Outras Esperas por Condição e Tempo
Esperar até o elemento existir usando o ID e um tempo limite:
_seleniumManager.WaitByElementIdUntilElementExists("botao", 5);
Esperar até o elemento ser clicável usando o ID e um tempo limite:
_seleniumManager.WaitByElementIdUntilElementBeClickable("botao", 5);
Esperar até o elemento existir usando By
:
_seleniumManager.WaitByUntilElementExists(By.Id("botao"), 5);
Esperar até o elemento ser clicável usando By
:
_seleniumManager.WaitByUntilElementBeClickable(By.Id("botao"), 5);
Esperar até o elemento existir utilizando seletor CSS:
_seleniumManager.WaitByCssSelectorUntilElementExists(".botao", 5);
Esperar até o elemento ser clicável utilizando seletor CSS:
_seleniumManager.WaitByCssSelectorUntilElementBeClickable(".botao", 5)
3. Interação com Elementos
4. Finalizar e Liberar Recursos
Finalizar e Liberar Recursos
- Encerrar o WebDriver e liberar recursos:
5. Utilização do WebDriver em Múltiplas Atividades
Utilização do WebDriver em Múltiplas Atividades
- Adicionar o WebDriver ao contexto do TestFlow: Para reutilizar o WebDriver em outras atividades, adicione-o ao contexto:
context.Resources.Add(_seleniumManager, "Selenium Manager");
Saiba mais
FAQ