Automatização de Testes UI: Domine C# e Selenium - Guia

Testar interfaces📜 Interfaces: Contratos que Garantem a Ordem no Universo OOP!📜 Interfaces: Contratos que Garantem a Ordem no Universo OOP!Descubra como as interfaces em C# funcionam como contratos que garantem implementações flexíveis e robustas, facilitando o design e testes de sistemas. gráficas manualmente é demorado e propenso a erros. Neste artigo, você aprenderá a criar um robô automatizado usando C# e Selenium para testar telas como um QA expert - mesmo sem experiência🌐 LinkedIn para Devs .NET: Perfil que Atrai Recrutadores!🌐 LinkedIn para Devs .NET: Perfil que Atrai Recrutadores!Aprenda a otimizar seu perfil LinkedIn com dicas essenciais para devs .NET. Conquiste oportunidades e destaque suas habilidades! prévia. Vamos explorar o universo dos testes automatizados de interface, onde você cria scripts que simulam interações do usuário e validam se os elementos da tela se comportam como esperado.

Índice🔗

1. O que é UI Testing Automatizado?

2. Por que Automatizar Testes de UI?

3. Configurando o Ambiente🧠 IA Nativa: Integre OpenAI direto no .NET!🧠 IA Nativa: Integre OpenAI direto no .NET!Aprenda a integrar o SDK oficial da OpenAI no .NET, configurando ambiente, chamadas de API, chatbots e melhores práticas para aplicações inteligentes.

4. Escrevendo seu Primeiro Teste

5. Interagindo com Elementos da Tela

6. Validando Resultados

7. Padrão Page Object: Organização Profissional

8. Lidando com Tempos de Espera (Wait Strategies)

9. Projeto Real📁 Portfólio .NET: Projetos que Impressionam Recrutadores!📁 Portfólio .NET: Projetos que Impressionam Recrutadores!Descubra dicas práticas e estratégicas para criar um portfólio .NET que demonstra expertise e atrai recrutadores, com projetos reais e arquitetura limpa.: Testando um Fluxo de Login

10. Integração com CI/CD🌍 Projeto: API de E-Commerce com ASP.NET Core e SQL Server!🌍 Projeto: API de E-Commerce com ASP.NET Core e SQL Server!Aprenda a construir uma API robusta para e-commerce com ASP.NET Core, EF Core, JWT e Swagger, validando suas habilidades em um projeto prático real.: Testes na Nuvem

11. Boas Práticas🔢 Operadores Aritméticos: Faça Cálculos como uma Calculadora Humana!🔢 Operadores Aritméticos: Faça Cálculos como uma Calculadora Humana!Aprenda a dominar operadores aritméticos em C# com exemplos práticos, técnicas de cálculo e dicas para evitar erros e maximizar resultados. e Dicas para Testes de UI Eficientes

12. Perguntas Frequentes

O que é UI Testing Automatizado?🔗

UI Testing Automatizado é a prática de criar scripts – ou "robôs" – que simulam as interações de um usuário com a interface📜 Interfaces: Contratos que Garantem a Ordem no Universo OOP!📜 Interfaces: Contratos que Garantem a Ordem no Universo OOP!Descubra como as interfaces em C# funcionam como contratos que garantem implementações flexíveis e robustas, facilitando o design e testes de sistemas. de uma aplicação. Em vez de clicar manualmente em cada botão e preencher cada campo, você automatiza esse processo, garantindo que as funcionalidades cruciais da sua aplicação estejam funcionando conforme esperado, mesmo após alterações no código.

Essa abordagem reduz erros🎲 Desafio: Crie um Sistema de Login com Tratamento de Erros Robusto!🎲 Desafio: Crie um Sistema de Login com Tratamento de Erros Robusto!Aprenda a criar um sistema de login robusto em C#, com tratamento de erros adequado, validação e segurança para evitar vulnerabilidades. humanos na fase de testes, acelera feedback e garante que, em qualquer atualização, você não precise reiniciar todo o processo manualmente.

Por que Automatizar Testes de UI?🔗

Para🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! Product Managers:

  • Reduz 70% do tempo de testes manuais
  • Garante que novas features não quebrem funcionalidades existentes

Para🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! Devs Migrantes:

💡 Cenário Real: Um banco reduziu bugs em produção em 40% após automatizar 300 cenários de UI.

Configurando o Ambiente🔗

Para começar, você precisa configurar o ambiente de desenvolvimento🧠 IA Nativa: Integre OpenAI direto no .NET!🧠 IA Nativa: Integre OpenAI direto no .NET!Aprenda a integrar o SDK oficial da OpenAI no .NET, configurando ambiente, chamadas de API, chatbots e melhores práticas para aplicações inteligentes.. Vamos usar Visual Studio🛠️ Instalação do Visual Studio: Prepare sua Nave para Decolar!🛠️ Instalação do Visual Studio: Prepare sua Nave para Decolar!Prepare seu ambiente de desenvolvimento com o Visual Studio em uma aventura C#. Este tutorial prático ensina a instalar, configurar e personalizar sua IDE. e📊 Behavior-Driven Development: Testes que Todo Mundo Entende!📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. o pacote Selenium WebDriver para C#.

1. Instale o Visual Studio🛠️ Instalação do Visual Studio: Prepare sua Nave para Decolar!🛠️ Instalação do Visual Studio: Prepare sua Nave para Decolar!Prepare seu ambiente de desenvolvimento com o Visual Studio em uma aventura C#. Este tutorial prático ensina a instalar, configurar e personalizar sua IDE.: Se ainda não tem, baixe e📊 Behavior-Driven Development: Testes que Todo Mundo Entende!📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. instale o Visual Studio🛠️ Instalação do Visual Studio: Prepare sua Nave para Decolar!🛠️ Instalação do Visual Studio: Prepare sua Nave para Decolar!Prepare seu ambiente de desenvolvimento com o Visual Studio em uma aventura C#. Este tutorial prático ensina a instalar, configurar e personalizar sua IDE..

2. Crie um Projeto🤝 GitHub Básico: Versionamento para Iniciantes!🤝 GitHub Básico: Versionamento para Iniciantes!Descubra como o GitHub facilita colaboração, versionamento e organização de código com este tutorial prático e essencial para desenvolvedores iniciantes. de Teste:

3. Adicione o Pacote Selenium:

4. Baixe o Driver do Navegador:

  • Se você vai testar no Chrome, por exemplo, baixe o ChromeDriver.
  • Coloque o arquivo do driver em uma pasta acessível ou configure o PATH do sistema.
dotnet add package Selenium.WebDriver
dotnet add package Selenium.WebDriver.ChromeDriver

Escrevendo seu Primeiro Teste🔗

Vamos criar um teste simples que abre o Google, pesquisa por "C# Selenium" e verifica se o título🌐 LinkedIn para Devs .NET: Perfil que Atrai Recrutadores!🌐 LinkedIn para Devs .NET: Perfil que Atrai Recrutadores!Aprenda a otimizar seu perfil LinkedIn com dicas essenciais para devs .NET. Conquiste oportunidades e destaque suas habilidades! da página contém o termo pesquisado.

using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
namespace SeleniumTests
{
    public class GoogleSearchTest
    {
        private IWebDriver driver;
        [SetUp]
        public void Setup()
        {
            // Inicializa o driver do Chrome
            driver = new ChromeDriver();
        }
        [Test]
        public void SearchForCSharpSelenium()
        {
            // Navega até o Google
            driver.Navigate().GoToUrl("https://www.google.com");
            // Localiza a barra de pesquisa e digita "C# Selenium"
            IWebElement searchBox = driver.FindElement(By.Name("q"));
            searchBox.SendKeys("C# Selenium");
            searchBox.Submit();
            // Aguarda a página carregar e verifica o título
            Assert.That(driver.Title, Contains.Substring("C# Selenium"));
        }
        [TearDown]
        public void Teardown()
        {
            // Fecha o navegador após o teste
            driver.Quit();
        }
    }
}

Explicação do Código:

Interagindo com Elementos da Tela🔗

O Selenium permite interagir com diversos elementos da interface📜 Interfaces: Contratos que Garantem a Ordem no Universo OOP!📜 Interfaces: Contratos que Garantem a Ordem no Universo OOP!Descubra como as interfaces em C# funcionam como contratos que garantem implementações flexíveis e robustas, facilitando o design e testes de sistemas., como botões, campos de texto, dropdowns e muito mais. Aqui estão alguns exemplos:

// Clicar em um botão
IWebElement button = driver.FindElement(By.Id("submit-button"));
button.Click();
// Preencher um campo de texto
IWebElement textField = driver.FindElement(By.Name("username"));
textField.SendKeys("usuario123");
// Selecionar um item de um dropdown
IWebElement dropdown = driver.FindElement(By.Id("cidade"));
SelectElement select = new SelectElement(dropdown);
select.SelectByText("São Paulo");

Validando Resultados🔗

A validação é uma parte crucial dos testes automatizados. Você pode verificar se elementos estão presentes, se textos📝 Strings em C#: Manipule Textos como um Mestre dos Caracteres!📝 Strings em C#: Manipule Textos como um Mestre dos Caracteres!Aprenda a dominar os segredos das strings em C# com técnicas de manipulação, concatenação, interpolação e boas práticas, impulsionando sua performance. estão corretos, ou se comportamentos esperados acontecem.

// Verifica se um elemento está presente
Assert.IsTrue(driver.FindElement(By.Id("resultado")).Displayed);
// Verifica se o texto de um elemento está correto
IWebElement resultText = driver.FindElement(By.ClassName("result"));
Assert.AreEqual("Operação realizada com sucesso!", resultText.Text);

Padrão Page Object: Organização Profissional🔗

public class LoginPage {
    private IWebDriver driver;
    public LoginPage(IWebDriver driver) => this.driver = driver;
    public void Login(string user, string pass) {
        driver.FindElement(By.Id("username")).SendKeys(user);
        driver.FindElement(By.Id("password")).SendKeys(pass);
        driver.FindElement(By.Id("login-btn")).Click();
    }
}
// No teste:
var loginPage = new LoginPage(driver);
loginPage.Login("admin", "senha123");
Vantagens:
  • Código reutilizável
  • Fácil manutenção

Lidando com Tempos de Espera (Wait Strategies)🔗

// Espera explícita - até 10 segundos
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement element = wait.Until(drv => drv.FindElement(By.Id("dynamicElement")));
// Espera implícita (global)
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
Wait Strategies
  • Tipos de espera no Selenium

Projeto Real: Testando um Fluxo de Login🔗

Cenário: Validar login🎲 Desafio: Crie um Sistema de Login com Tratamento de Erros Robusto!🎲 Desafio: Crie um Sistema de Login com Tratamento de Erros Robusto!Aprenda a criar um sistema de login robusto em C#, com tratamento de erros adequado, validação e segurança para evitar vulnerabilidades. bem-sucedido e casos de erro

[TestMethod]
public void TestLogin_ValidCredentials() {
    driver.Navigate().GoToUrl("https://app.com/login");
    new LoginPage(driver).Login("[email protected]", "Senha@123");
    Assert.IsTrue(driver.Url.Contains("dashboard"));
}
[TestMethod]
public void TestLogin_InvalidPassword() {
    new LoginPage(driver).Login("[email protected]", "errada");
    IWebElement error = driver.FindElement(By.ClassName("alert-danger"));
    Assert.AreEqual("Senha incorreta", error.Text);
}

Integração com CI/CD: Testes na Nuvem🔗

Exemplo de pipeline📊 Pipelines: Pré-processe Dados como um Cientista!📊 Pipelines: Pré-processe Dados como um Cientista!Aprenda a criar pipelines eficientes com ML.NET, automatizando o pré-processamento de dados e garantindo modelos de Machine Learning precisos e reprodutíveis. no Azure DevOps:

steps:
  • task: DotNetCoreCLI@2
inputs: command: 'test' projects: '**/*Tests.csproj' arguments: '--configuration Release'
  • task: PublishTestResults@2
inputs: testResultsFormat: 'NUnit' testResultsFiles: '**/TestResults/*.xml'

Boas Práticas e Dicas para Testes de UI Eficientes🔗

Perguntas Frequentes🔗

❓ Como testar em diferentes navegadores?

// Firefox
IWebDriver driver = new FirefoxDriver();
// Edge
IWebDriver driver = new EdgeDriver();

❓ Meus testes falham aleatoriamente. O que fazer?

❓ Posso testar mobile?

Sim! Use Appium com Selenium para🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! apps iOS/Android.

Conclusão🔗

Automatizar testes de UI com C# não é só para🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! QAs:

🎯 Próximo Passo: Crie um teste para validar o carrinho de compras do seu projeto!

Pronto! Agora você tem o básico para começar a automatizar testes de interface📜 Interfaces: Contratos que Garantem a Ordem no Universo OOP!📜 Interfaces: Contratos que Garantem a Ordem no Universo OOP!Descubra como as interfaces em C# funcionam como contratos que garantem implementações flexíveis e robustas, facilitando o design e testes de sistemas. com Selenium. Com prática, você pode criar robôs poderosos que garantem a qualidade da sua aplicação sem precisar testar manualmente cada funcionalidade. 🚀

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

Compartilhar artigo

Artigos Relacionados