Selenium Tutorial de C#: Framework NUnit com Exemplo
⚡ Resumo Inteligente
Selenium O WebDriver controla os navegadores a partir do C# através da interface IWebDriver, enquanto o NUnit fornece os atributos de teste, as asserções e os relatórios do Test Explorer que transformam essas etapas do navegador em testes automatizados repetíveis.
Selenium Visão geral
Selenium é uma web de código aberto Teste de automação ferramenta que suporta múltiplos navegadores e múltiplos sistemas operacionais. Ela permite que os testadores usem múltiplas linguagens de programação como Java, C#, PythonRuby, PHP e Perl para codificar testes automatizados. Se você é novo na ferramenta, comece com o Selenium tutorial e WebDriver versus Selenium Comparação RC.
Selenium Fornece o controle do navegador; a linguagem que você usa para controlá-lo fornece a estrutura.
Visão geral do C#
C# é uma linguagem de programação orientada a objetos derivada de C++ e JavaO C# permite que os desenvolvedores criem aplicativos usando o Visual Studio na plataforma .NET. A seguir, estão os principais recursos do C#. C#.
- É uma linguagem de programação orientada a objetos
- Ele suporta o desenvolvimento de aplicativos baseados em console, Windows e web
- Ele fornece recursos como encapsulamento, herança e polimorfismo.
Antes da fiação Selenium Isso ajuda a reconhecer a estrutura de um programa C# simples.
Sintaxe Básica de C#
Um programa em C# precisa conter as seguintes seções.
- Declaração de namespace
- Classes
- Atributos e métodos de classe
- Método principal
- declarações do programa
Exemplo-
Abaixo está um exemplo Selenium Programa de exemplo em C# para imprimir o texto 'Guru99' no console do sistema.
using System; namespace FirstProgram { class DemoPrint { static void main(){ Console.WriteLine("Guru99"); } } }
Explicação:
- Um namespace acima Selenium O exemplo C# é uma coleção de várias classes. Cada namespace deve ser declarado usando a palavra-chave 'using'.
- A primeira instrução do código inclui o namespace 'System' em nosso programa. O namespace do sistema define as classes e eventos fundamentais usados em C#. O namespace a ser usado depende dos requisitos do programa.
- A segunda instrução declara um namespace “FirstProgram” para a classe “DemoPrint”. O arquivo AC# pode conter várias classes no mesmo namespace.
- A terceira instrução inclui a declaração de classe. Uma classe pode conter vários atributos e vários métodos.
- A quarta instrução inclui uma declaração do método Main. O método principal é o ponto de entrada de execução de cada classe.
- A última instrução é a sintaxe C# usada para imprimir uma instrução no console. WriteLine é um método do
Consoleclasse. Observe que o ponto de entrada é escritoMaincom M maiúsculo em Dó sustenido real; o minúsculomainO exemplo acima não será reconhecido como um ponto de entrada.
Com a sintaxe clara, a próxima tarefa é instalar as ferramentas que compilam e executam esses testes.
Selenium com configuração C#
Como configurar o Visual Studio com Selenium WebDriver:
Agora neste Selenium Tutorial C#, vamos aprender o processo passo a passo para configurar o Visual Studio com Selenium WebDriver:
O Visual Studio é um Ambiente de Desenvolvimento Integrado (IDE) usado por desenvolvedores para criar aplicativos em várias plataformas, como Windows, Android, iOS e aplicativos baseados em nuvem.
Passo 1) Navegue até a URL
https://visualstudio.microsoft.com/downloads/ e clique no 'Download grátis' botão exibido na guia Comunidade do Visual Studio
Passo 2) Abra o exe baixado. Clique em 'Sim' se forem solicitados direitos de administrador.
Passo 3) O pop-up abaixo aparecerá. Clique no botão 'Continuar'.
Os arquivos serão baixados conforme mostrado no pop-up abaixo.
Passo 4) Na próxima tela,
Marque as caixas de seleção para
- Universal Windows Desenvolvimento de plataforma
- Desenvolvimento de desktop .NET
Clique em 'Instalar'.
Aguarde a conclusão da instalação de cada componente. Os arquivos têm 16 GB e levarão algum tempo.
Passo 5) O pop-up abaixo será exibido. Clique no botão 'Reiniciar'.
Passo 6) Assim que a máquina for reiniciada, pesquise “Visual Studio” no menu iniciar e clique no resultado da pesquisa. O seguinte pop-up aparecerá. Clique no link “Agora não, talvez mais tarde” se você não tiver uma conta existente.
Passo 7) Na próxima tela,
- Selecione o tema de cor de sua preferência
- Clique no botão “Iniciar o Visual Studio”.
Passo 8) A tela 'Introdução' do Visual Studio será exibida.
Crie um novo projeto no Visual Studio:
Passo 1) No menu Arquivo, clique em Novo > Projeto
Passo 2) Na próxima tela,
- Selecione a opção 'Visual C#'
- Clique no aplicativo de console (.Net Framework)
- Digite o nome como “Guru99"
- clique em OK
Passo 3) A tela abaixo será exibida assim que o projeto for criado com sucesso.
Configurar o Visual Studio com Selenium WebDriver:
Passo 1) Navegue até Ferramentas -> NuGet Gerenciador de pacotes -> Gerenciar NuGet Pacotes para solução
Passo 2) Na próxima tela
- Procurar por Selenium na tela resultante
- Selecione o primeiro resultado da pesquisa
- Marque a caixa de seleção do projeto
- Clique em 'Instalar'
Passo 3) Clique no botão 'OK' na tela pop-up
Passo 4) A mensagem abaixo será exibida assim que o pacote for instalado com sucesso.
Selenium Agora é possível abrir um navegador, mas ainda não é possível informar se um teste foi aprovado. Essa é a função de um framework de testes unitários.
Estrutura NUnit: Visão Geral
NUnit é o Teste de Unidade estrutura suportada pelo Visual Studio e Selenium WebDriver. O NUnit é a estrutura de testes unitários mais utilizada para aplicações .NET. O NUnit apresenta os resultados dos testes em um formato legível e permite que o testador depure os testes automatizados.
Para utilizá-lo, precisamos instalar o NUnit Framework e o NUnit Test Adapter no Visual Studio.
Etapas para instalar o NUnit Framework
Agora neste Selenium com tutorial C#, vamos aprender o processo de instalação do framework NUnit:
Passo 1) Navegue até Ferramentas -> NuGet Gerenciador de pacotes -> Gerenciar NuGet Pacotes para solução
Passo 2) Na próxima janela
- Procure por NUnit
- Selecione o resultado da pesquisa
- Selecionar projeto
- Clique em Instalar
Passo 3) O pop-up abaixo aparecerá. Clique no botão 'Ok'.
Passo 4) A mensagem abaixo aparecerá assim que a instalação for concluída.
Etapas para baixar o adaptador de teste NUnit
Agora, neste tutorial do NUnit, abordaremos as etapas para baixar o NUnit Test Adapter:
Observe que as etapas abaixo funcionam apenas para máquinas de 32 bits. Para máquinas de 64 bits, você precisa baixar o 'NUnit3 Test Adapter' seguindo o mesmo processo mencionado abaixo.
Pacotes atuais: um projeto moderno instala Adaptador de teste NUnit3 Juntamente com Microsoft.NET.Test.Sdke o mais velho Adaptador de teste NUnit O pacote não recebe mais manutenção. No .NET (Core), todo o projeto pode ser estruturado com dotnet new nunit, que adiciona todos os três pacotes para você.
Passo 1) Navegue até Ferramentas ->NuGet Gerenciador de pacotes -> Gerenciar NuGet Pacotes para solução. Nessa tela,
- Pesquisar NUnitTestAdapter
- Clique em Resultado da pesquisa
- Selecionar projeto
- Clique em Instalar
Passo 2) Clique em OK no pop-up de confirmação. Assim que a instalação estiver concluída, você verá a seguinte mensagem-
Ambas as metades estão instaladas, então o próximo passo é uni-las em uma única classe de teste.
Selenium e estrutura NUnit
A integração do Selenium com a estrutura NUnit permite que um testador diferencie entre várias classes de teste. O NUnit também permite que os testadores usem anotações como SetUp, Test e TearDown para executar ações antes e depois da execução do teste.
A estrutura NUnit pode ser integrada com Selenium Criando uma classe de teste NUnit e executando-a usando o framework NUnit. Java O equivalente a esse padrão é abordado em JUnit tutorial de estruturaE a alternativa .NET ao NUnit dentro do Visual Studio é discutida em conjunto. TestNG pela Selenium.
Abaixo das etapas neste Selenium O tutorial da estrutura C# é necessário para criar e executar uma classe de teste usando a estrutura NUnit.
Etapas para criar uma classe de teste NUnit em Selenium:
Passo 1) No Explorador de Soluções, clique com o botão direito do mouse no projeto > Adicionar > Classe
Passo 2) A janela de criação de classe aparecerá.
- Forneça um nome para a classe
- Clique no botão Adicionar
Passo 3) A tela abaixo aparecerá.
Passo 4) Adicione o seguinte código à classe criada. Observe que você precisa especificar o local do arquivo 'chromedriver.exe' durante a inicialização do driver do Chrome. Selenium 4.6 e versões posteriores do navio Selenium Manager, que resolve automaticamente o driver correspondente, então new ChromeDriver() A forma atual é sem argumento de caminho — o caminho abaixo é mantido porque corresponde às capturas de tela.
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Firefox; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Guru99Demo { class Guru99Demo { IWebDriver driver; [SetUp] public void startBrowser() { driver = new ChromeDriver("D:\\3rdparty\\chrome"); } [Test] public void test() { driver.Url = "http://www.google.co.in"; } [TearDown] public void closeBrowser() { driver.Close(); } } }
Passo 4) Clique em 'Construir' -> 'Construir Solução'
OBSERVAÇÃO: Você pode receber um erro como “Não contém um método 'principal' estático adequado para um ponto de entrada” ao construir
Para resolver isso, acesse Projeto > Propriedades e altere o Tipo de Saída para “Biblioteca de Classes”. O padrão é “Aplicativo de Console”.
Passo 5) Assim que a construção for bem-sucedida, precisamos abrir a janela Test Explorer. Clique em Teste -> Windows -> Explorador de Testes
Passo 6) A janela Test Explorer é aberta com a lista de testes disponíveis. Clique com o botão direito em Test Explorer e selecione Executar testes selecionados
Passo 7) Selenium deve abrir o navegador com o especificado URL e feche o navegador. O status do caso de teste será alterado para 'Aprovado' na janela do Explorador de Testes.
Um teste aprovado comprova que o sistema de encanamento funciona. A seguir, apresentamos o vocabulário que você usará na elaboração das provas.
Selenium Comandos WebDriver em C#
C# usa a interface 'IWebDriver' para interações do navegador. A seguir estão as categorias de comandos disponíveis com Selenium em C #.
- Comandos do navegador
- Comandos do Elemento Web
- Comandos suspensos
Agora neste Selenium Tutorial de C#, vamos estudar o Selenium O WebDriver executa comandos um por um. Java As contrapartes são demonstradas neste primeiro script WebDriver passo a passo.
Os comandos abaixo ainda são os atuais. IWebDriver superfície em Selenium 4, portanto a sintaxe permanece inalterada.
Comandos do navegador:
A seguir está uma lista de comandos do navegador disponíveis em C# com Selenium.
| Nome do Comando | Descrição | Sintaxe |
|---|---|---|
| Comando Url | Este comando é usado para abrir um arquivo especificado. URL no navegador. |
driver.Url = "https://www.guru99.com"
|
| Comando de título | Este comando é usado para recuperar o título da página da web que está aberta no momento |
String title = driver.Title
|
| Comando PageSource | Este comando é usado para recuperar o código-fonte da página da web que está aberta no momento. |
String pageSource = driver.PageSource
|
| Comando Fechar | Este comando é usado para fechar a instância do navegador aberta recentemente. |
driver.Close(); |
| Sair do comando | Este comando é usado para fechar todas as instâncias abertas do navegador |
driver.Quit(); |
| Comando Voltar | Este comando é usado para navegar para a página anterior do histórico do navegador. |
driver.Navigate().Back(); |
| Comando de avanço | Este comando é usado para navegar para a próxima página do histórico do navegador. |
driver.Navigate().Forward() |
| Comando Atualizar | Este comando é usado para realizar a atualização do navegador. |
driver.Navigate().Refresh() |
Os comandos do navegador atuam na janela; o próximo grupo atua no conteúdo da janela.
Comandos de elementos da Web
Um WebElement representa qualquer elemento em uma página da web. Eles são representados por tags HTML. Botões, caixas de texto, links, imagens, tabelas e frames são todos WebElements. OperaAs ações nesses elementos são desencadeadas por meio de IWebElement interface. Para interagir com um WebElement, primeiro Encontre o elemento na página e, em seguida, realizar uma operação nela. As estratégias disponíveis são abordadas em localizadores em SeleniumAs ferramentas de desenvolvedor do navegador — ou os antigos complementos Firebug e Firepath, que as capturas de tela abaixo não abrangem — podem ser usadas para identificar o XPath de um WebElement.
A seguir, estão os comandos WebElement disponíveis em C#.
| Nome do Comando | Descrição | Sintaxe |
|---|---|---|
| Clique no comando | Este comando é usado para clicar em um Webelement. Para que o elemento seja clicável, ele deve estar visível na página da web. Este comando também é usado para operações de caixas de seleção e botões de opção. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); element.Click();
|
| Comando limpar | Este comando é usado especificamente para limpar o conteúdo existente das caixas de texto. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));
element.Clear();
|
| Comando EnviarChaves | Este comando é usado para inserir um valor em caixas de texto. O valor a ser inserido deve ser passado como parâmetro para |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); element.SendKeys("guru99"); |
| Comando exibido | Este comando é usado para identificar se um elemento específico é exibido na página web. Este comando retorna um valor booleano; verdadeiro ou falso dependendo da visibilidade do elemento da web. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); Boolean status = element.Displayed; |
| Comando habilitado | Este comando é usado para identificar se um determinado elemento da web está habilitado na página da web. Este comando retorna um valor booleano; verdadeiro ou falso como resultado. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); Boolean status = element.Enabled; |
| Comando selecionado | Este comando é usado para identificar se um determinado elemento da web está selecionado. Ele funciona com caixas de seleção, botões de opção e operações de seleção. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); Boolean status = element.Selected; |
| Enviar comando: | Este comando é semelhante ao comando clicar. A diferença está em saber se o formulário HTML possui um botão do tipo Enviar. Enquanto o comando click clica em qualquer botão, o comando submit clica apenas nos botões com o tipo submit. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); element.submit();
|
| Comando de texto | Este comando retorna o texto interno de um Webelement. Este comando retorna um valor de string como resultado. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); String text=element.Text; |
| Comando NomeTag | Este comando retorna a tag HTML de um elemento da web. Ele retorna um valor de string como resultado. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); String tagName = element.TagName; |
| Comando GetCSSValue: | Este método é usado para retornar a cor de um elemento da web na forma de uma string rgba (vermelho, verde, azul e alfa). |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); String color = element.getCSSValue; saída– Se a cor do elemento for vermelha, a saída seria rgba(255,0,0,1) |
Nota sobre as amostras acima: A tabela reproduz a sintaxe original. No presente Selenium .NET: os membros são escritos em PascalCase — element.Submit() e element.GetCssValue("color") - E GetCssValue Recebe o nome da propriedade CSS como argumento.
Comandos suspensos:
As operações suspensas em C# podem ser realizadas usando a classe SelectElement.
A seguir estão as várias operações suspensas disponíveis em C#.
| Nome do Comando | Descrição | Sintaxe |
|---|---|---|
| Comando SelecionarPorTexto | Este comando seleciona uma opção de um menu suspenso com base no texto da opção. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.SelectByText("Guru99"); |
| Comando SelectByIndex | Este comando é usado para selecionar uma opção com base em seu índice. O índice do menu suspenso começa em 0. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.SelectByIndex("4"); |
| Comando SelecionarPorValor | Este comando é usado para selecionar uma opção com base em seu valor de opção. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.SelectByValue("Guru99"); |
| Comando de opções | Este comando é usado para recuperar a lista de opções exibidas em um menu suspenso. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); List<IWebelement> options = select. Options; int size = options.Count; for(int i=0;i<options.size();i++) { String value = size.elementAt(i).Text; Console.writeLine(value); } O código acima imprime todas as opções no console em um menu suspenso. |
| Comando IsMultiple | Este comando é usado para identificar se uma lista suspensa é de seleção múltipla; uma lista suspensa de seleção múltipla permite que o usuário escolha mais de uma opção por vez. Este comando retorna um valor booleano. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); Boolean status = select.IsMultiple(); |
| Comando Desselecionar tudo | Este comando é usado em menus suspensos de seleção múltipla. Limpa as opções que já foram selecionadas. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.DeSelectAll(); |
| Comando DeSelectByIndex | Este comando desmarca um valor já selecionado usando seu índice. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.DeSelectByIndex("4"); |
| Comando DeSelectByValue | Este comando desmarca um valor já selecionado usando seu valor. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.DeSelectByValue("Guru99"); |
| Comando DeSelectByText | Este comando desmarca um valor já selecionado usando seu texto. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.DeSelectByText("Guru99"); |
Os quatro scripts abaixo executam os comandos acima contra o Guru99 sites de demonstração. Cada um deles é uma classe de teste NUnit completa e executável.
Code amostras
Exemplo 1: Clique em um link usando o Localizador XPATH:
Cenário de teste:
- Acesse a demonstração. Guru99 páginas da web – https://demo.guru99.com/test/guru99home/
- Maximize a janela
- Clique no menu 'Teste'
- Feche o navegador
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Guru99Demo { class CSS { IWebDriver m_driver; [Test] public void cssDemo() { m_driver = new ChromeDriver("D:\\3rdparty\\chrome"); m_driver.Url = "https://demo.guru99.com/test/guru99home/"; m_driver.Manage().Window.Maximize(); IWebelement link = m_driver.FindElement(By.XPath(".//*[@id='rt-header']//div[2]/div/ul/li[2]/a")); link.Click(); m_driver.Close(); } } }
Exemplo 2: Inserindo dados em TextoBox e clique em um botão usando o localizador XPATH:
Cenário de teste:
- Navegue até a GuruPágina de demonstração 99 – https://demo.guru99.com/test/guru99home/
- Insira os dados na caixa de texto do e-mail
- Clique no botão de inscrição
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Guru99Demo { class CSS { IWebDriver m_driver; [Test] public void cssDemo() { m_driver = new ChromeDriver("G:\\"); m_driver.Url = "https://demo.guru99.com/test/guru99home/"; m_driver.Manage().Window.Maximize(); // Store locator values of email text box and sign up button IWebElement emailTextBox = m_driver.FindElement(By.XPath(".//*[@id='philadelphia-field-email']")); IWebElement signUpButton = m_driver.FindElement(By.XPath(".//*[@id='philadelphia-field-submit']")); emailTextBox.SendKeys("test123@gmail.com"); signUpButton.Click(); } } }
Exemplo 3: Inserindo dados em TextoBox e clique em um botão usando o localizador CSS:
Cenário de teste:
- Navegue até a GuruPágina de demonstração 99 – https://demo.guru99.com/test/guru99home/
- Insira os dados na caixa de texto do e-mail
- Clique no botão de inscrição
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Guru99Demo { class CSS { IWebDriver m_driver; [Test] public void cssDemo() { m_driver = new ChromeDriver("G:\\"); m_driver.Url = "https://demo.guru99.com/test/guru99home/"; m_driver.Manage().Window.Maximize(); // Store locator values of email text box and sign up button IWebElement emailTextBox = m_driver.FindElement(By.CssSelector("input[id=philadelphia-field-email]")); IWebElement signUpButton = m_driver.FindElement(By.CssSelector("input[id=philadelphia-field-submit]")); emailTextBox.SendKeys("test123@gmail.com"); signUpButton.Click(); } } }
Exemplo 4: Selecione um valor no menu suspenso:
Cenário de teste:
- Navegue até a GuruPágina de demonstração 99 – https://demo.guru99.com/test/guru99home/
- Clique em SAP link
- Insira dados nas caixas de texto de nome e e-mail
- Selecione um valor no menu suspenso Curso
- Feche o navegador
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Support.UI; namespace Guru99Demo { class TestSelect { IWebDriver m_driver; [Test] public void selectDemo() { m_driver = new ChromeDriver("G:\\"); m_driver.Url = "https://demo.guru99.com/test/guru99home/"; m_driver.Manage().Window.Maximize(); IWebElement course = m_driver.FindElement(By.XPath(".//*[@id='awf_field-91977689']")); var selectTest = new SelectElement(course); // Select a value from the dropdown selectTest.SelectByValue("sap-abap"); } } }
































