Selenium Tutorial de C# con ejemplo de NUnit
Selenium Noticias
Selenium es una web de cรณdigo abierto Pruebas de automatizaciรณn Herramienta que admite varios navegadores y sistemas operativos. Permite a los evaluadores utilizar varios lenguajes de programaciรณn, como Java, C#, Python, .Net, Ruby, PHP y Perl para codificar pruebas automatizadas.
Descripciรณn general de C#
C# es un lenguaje de programaciรณn orientado a objetos derivado de C++ y JavaC# permite a los desarrolladores crear aplicaciones utilizando Visual Studio en la plataforma .Net. Las siguientes son las caracterรญsticas clave de C#.
- Es un lenguaje de programaciรณn orientado a objetos.
- Admite el desarrollo de aplicaciones de consola, Windows y basadas en web.
- Proporciona funciones como encapsulaciรณn, herencia y polimorfismo.
Sintaxis bรกsica de C#
Un programa en C# debe contener las siguientes secciones
- Declaraciรณn de espacio de nombres
- Clases
- Atributos y mรฉtodos de clase
- Mรฉtodo principal
- Declaraciones de programas
Ejemplo-
A continuaciรณn se muestra una muestra Selenium Programa de ejemplo C# para imprimir el texto 'Guru99' en la consola del sistema.
using System;
namespace FirstProgram {
class DemoPrint {
static void main(){
Console.WriteLine("Guru99");
}
}
}
Explicaciรณn:
- Un espacio de nombres en lo anterior Selenium El ejemplo de C# es una colecciรณn de varias clases. Cada espacio de nombres debe declararse utilizando la palabra clave "usando".
- La primera declaraciรณn del cรณdigo incluye el espacio de nombres "Sistema" en nuestro programa. El espacio de nombres del sistema define las clases y eventos fundamentales utilizados en C#. El espacio de nombres que se utilizarรก depende de los requisitos del programa.
- La segunda declaraciรณn declara un espacio de nombres "FirstProgram" para la clase "DemoPrint". Un archivo C# puede contener varias clases dentro del mismo espacio de nombres.
- La tercera declaraciรณn incluye la declaraciรณn de clase. Una clase puede contener mรบltiples atributos y mรบltiples mรฉtodos.
- La cuarta declaraciรณn incluye una declaraciรณn del mรฉtodo Main. El mรฉtodo principal es el punto de entrada de ejecuciรณn de cada clase.
- La รบltima declaraciรณn es la sintaxis de C# utilizada para imprimir una declaraciรณn en la consola. WriteLine es un mรฉtodo de la clase 'Console.
Selenium con configuraciรณn de C#
Cรณmo configurar Visual Studio con Selenium controlador web:
Ahora en esto Selenium Tutorial de C#, aprendamos el proceso paso a paso para configurar Visual Studio con Selenium controlador web:
Visual Studio es un entorno de desarrollo integrado (IDE) que utilizan los desarrolladores para crear aplicaciones en mรบltiples plataformas como Windows, Android, iOS y aplicaciones basadas en la nube.
Paso 1) Navegar a la URL
https://visualstudio.microsoft.com/downloads/ y haga clic en el 'Descarga gratis' Botรณn que se muestra en la pestaรฑa Comunidad de Visual Studio
Paso 2) Abra el exe descargado. Haga clic en "Sรญ" si se le solicitan derechos de administrador.
Paso 3) Aparecerรก la siguiente ventana emergente. Haga clic en el botรณn 'Continuar'.
Los archivos se descargarรกn como se muestra en la ventana emergente a continuaciรณn.
Paso 4) En la siguiente pantalla,
Seleccione las casillas de verificaciรณn para
- Universal Windows Desarrollo de plataforma
- Desarrollo de escritorio .Net
Haga clic en 'Instalar'.
Espere a que se complete la instalaciรณn de cada componente. Los archivos tienen un tamaรฑo de 16 GB y llevarรกn tiempo.
Paso 5) Aparecerรก la ventana emergente que aparece a continuaciรณn. Haga clic en el botรณn "Reiniciar".
Paso 6) Una vez que se reinicie la mรกquina, busque โVisual Studioโ en el menรบ de inicio y haga clic en el resultado de la bรบsqueda. Aparecerรก la siguiente ventana emergente. Haga clic en el enlace โAhora no, tal vez mรกs tardeโ si no tiene una cuenta existente.
Paso 7) En la siguiente pantalla,
- Seleccione el tema de color de su agrado
- Haga clic en el botรณn โIniciar Visual Studioโ
Paso 8) Aparecerรก la pantalla 'Comenzar' de Visual Studio.
Cree un nuevo proyecto en Visual Studio:
Paso 1) En el menรบ Archivo, haga clic en Nuevo > Proyecto
Paso 2) En la siguiente pantalla,
- Seleccione la opciรณn 'Visual C#'
- Haga clic en Aplicaciรณn de consola (.Net Framework)
- Ingrese el nombre como "Guru99"
- haga clic en Aceptar
Paso 3) La siguiente pantalla se mostrarรก una vez que el proyecto se haya creado correctamente.
Configurar Visual Studio con Selenium controlador web:
Paso 1) Vaya a Herramientas -> NuGet Administrador de paquetes -> Administrar NuGet Paquetes de soluciรณn
Paso 2) En la siguiente pantalla
- Busque Selenium en la pantalla resultante
- Seleccione el primer resultado de bรบsqueda
- Marque la casilla de verificaciรณn del proyecto
- Haga clic en 'Instalar'
Paso 3) Haga clic en el botรณn "Aceptar" en la pantalla emergente.
Paso 4) El siguiente mensaje se mostrarรก una vez que el paquete se haya instalado correctamente.
Marco NUnit: descripciรณn general
NUnidad es la Examen de la unidad marco compatible con Visual Studio y Selenium Controlador web. NUnit es el marco de pruebas unitarias mรกs utilizado para aplicaciones .Net. NUnit presenta los resultados de las pruebas en un formato legible y permite al evaluador depurar las pruebas automatizadas.
Necesitamos instalar NUnit Framework y NUnit Test Adapter en Visual Studio para poder usarlo.
Pasos para instalar NUnit Framework
Ahora en esto Selenium Con el tutorial de C#, aprendamos el proceso para instalar el marco NUnit:
Paso 1) Vaya a Herramientas -> NuGet Administrador de paquetes -> Administrar NuGet Paquetes de soluciรณn
Paso 2) En la siguiente ventana
- Buscar NUnit
- Seleccione el resultado de la bรบsqueda
- Seleccionar proyecto
- Haga clic en Instalar
Paso 3) Aparecerรก la siguiente ventana emergente. Haga clic en el botรณn "Aceptar".
Paso 4) El siguiente mensaje aparecerรก una vez que se complete la instalaciรณn.
Pasos para descargar el adaptador de prueba NUnit
Ahora, en este tutorial de NUnit, cubriremos los pasos para descargar el Adaptador de prueba NUnit:
Tenga en cuenta que los pasos siguientes funcionan solo en equipos de 32 bits. En el caso de equipos de 64 bits, debe descargar el "Adaptador de prueba NUnit3" siguiendo el mismo proceso que se menciona a continuaciรณn.
Paso 1) Vaya a Herramientas ->NuGet Administrador de paquetes -> Administrar NuGet Paquetes para soluciรณn. En esa pantalla,
- Buscar NUnitTestAdapter
- Haga clic en Resultado de bรบsqueda
- Seleccionar proyecto
- Haga clic en Instalar
Paso 2) Haga clic en Aceptar en la ventana emergente de confirmaciรณn. Una vez finalizada la instalaciรณn, verรก el siguiente mensaje:
Selenium y marco NUnit
La integraciรณn de Selenium con el marco de trabajo NUnit permite que el evaluador pueda diferenciar entre varias clases de prueba. NUnit tambiรฉn permite que los evaluadores utilicen anotaciones como SetUp, Test y TearDown para realizar acciones antes y despuรฉs de ejecutar la prueba.
El marco NUnit se puede integrar con Selenium creando una clase de prueba NUnit y ejecutando la clase de prueba usando el marco NUnit.
A continuaciรณn los pasos en este Selenium Se necesita un tutorial del marco C# para crear y ejecutar una clase de prueba utilizando el marco NUnit.
Pasos para crear una clase de prueba NUnit en Selenium:
Paso 1) En el Explorador de soluciones, haga clic derecho en proyecto> Agregar> Clase
Paso 2) Aparecerรก la ventana de creaciรณn de clases.
- Proporcionar un nombre a la clase.
- Haga clic en el botรณn Agregar
Paso 3) Aparecerรก la siguiente pantalla.
Paso 4) Agregue el siguiente cรณdigo a la clase creada. Tenga en cuenta que debe especificar la ubicaciรณn del archivo 'chromdriver.exe' durante la inicializaciรณn del controlador de Chrome.
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();
}
}
}
Paso 4) Haga clic en 'Crear' -> 'Crear soluciรณn'
NOTA: Es posible que reciba un error como "No contiene un mรฉtodo 'principal' estรกtico adecuado para un punto de entrada" cuando compila
Para resolver esto, vaya a Proyecto> Propiedades y cambie el Tipo de salida a "Biblioteca de clases". El valor predeterminado es "Aplicaciรณn de consola".
Paso 5) Una vez que la compilaciรณn sea exitosa, debemos abrir la ventana del Explorador de pruebas. Haga clic en Prueba -> Windows -> Explorador de pruebas
Paso 6) Se abre la ventana del Explorador de pruebas con la lista de pruebas disponibles. Haga clic derecho en Test Explorer y seleccione Ejecutar pruebas seleccionadas
Paso 7) Selenium debe abrir el navegador con la URL especificada y cerrarlo. El estado del caso de prueba se cambiarรก a "Aprobado" en la ventana del Explorador de pruebas.
Selenium Comandos de WebDriver en C#
C# utiliza la interfaz 'IWebDriver' para las interacciones con el navegador. Las siguientes son las categorรญas de comandos disponibles con Selenium C ยช#.
- Comandos del navegador
- Comandos de elementos web
- Comandos desplegables
Ahora en el Selenium Tutorial de C Sharp, estudiemos el Selenium Comandos de WebDriver uno por uno
Comandos del navegador:
A continuaciรณn se muestra una lista de comandos del navegador disponibles en C# con Selenium.
| Nombre del comando | Descripciรณn | Sintaxis |
|---|---|---|
| Comando URL | Este comando se utiliza para abrir una URL especรญfica en el navegador. |
driver.Url = "https://www.guru99.com" |
| Comando de tรญtulo | Este comando se utiliza para recuperar el tรญtulo de la pรกgina web que estรก actualmente abierta |
String title = driver.Title |
| Comando de origen de pรกgina | Este comando se utiliza para recuperar el cรณdigo fuente de la pรกgina web que estรก actualmente abierta. |
String pageSource = driver.PageSource |
| Cerrar comando | Este comando se utiliza para cerrar la instancia del navegador abierta recientemente. |
driver.Close(); |
| Salir del comando | Este comando se utiliza para cerrar todas las instancias abiertas del navegador. |
driver.Quit(); |
| Comando Atrรกs | Este comando se utiliza para navegar a la pรกgina anterior del historial del navegador. |
driver.Navigate().Back(); |
| Comando de avance | Este comando se utiliza para navegar a la siguiente pรกgina del historial del navegador. |
driver.Navigate().Forward() |
| Actualizar comando | Este comando se utiliza para realizar la actualizaciรณn del navegador. |
driver.Navigate().Refresh() |
Comandos de elementos web
Un Webelement representa todos los elementos de una pรกgina web. Se representan mediante etiquetas HTML. Todos los botones, cuadros de texto, enlaces, imรกgenes, tablas y marcos se incluyen en Webelements. OperaLas interacciones con elementos web se pueden activar mediante la interfaz IWebelement. Para interactuar con un elemento web, necesitamos encontrar el elemento en la pรกgina web y luego realizar operaciones en รฉl. Se pueden utilizar herramientas como Firebug y Firepath para identificar el elemento. Xpath de Webelement.
La siguiente es la lista de comandos de Webelement disponibles en C#.
| Nombre del comando | Descripciรณn | Sintaxis |
|---|---|---|
| Haga clic en el comando | Este comando se utiliza para hacer clic en un elemento web. Para que se pueda hacer clic en el elemento, este debe estar visible en la pรกgina web. Este comando tambiรฉn se utiliza para operaciones con casillas de verificaciรณn y botones de opciรณn. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); element.Click();
|
| Borrar comando | Este comando se utiliza especรญficamente para borrar el contenido existente de los cuadros de texto. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));
element.Clear();
|
| Comando enviar claves | Este comando se utiliza para ingresar un valor en cuadros de texto. El valor que se ingresarรก debe pasarse como parรกmetro a |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));
element.SendKeys("guru99");
|
| Comando mostrado | Este comando se utiliza para identificar si un elemento especรญfico se muestra en la pรกgina web. Este comando devuelve un valor booleano; verdadero o falso segรบn la visibilidad del elemento web. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));
Boolean status = element.Displayed;
|
| Comando habilitado | Este comando se utiliza para identificar si un elemento web en particular estรก habilitado en la pรกgina web. Este comando devuelve un valor booleano; verdadero o falso como resultado. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));
Boolean status = element.Enabled;
|
| Comando seleccionado | Este comando se utiliza para identificar si un elemento web en particular estรก seleccionado. Este comando se utiliza para casillas de verificaciรณn, botones de opciรณn y operaciones de selecciรณn. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));
Boolean status = element.Selected;
|
| Enviar comando: | Este comando es similar al comando de clic. La diferencia radica en si el formulario HTML tiene un botรณn del tipo Enviar. Mientras que el comando de clic hace clic en cualquier botรณn, el comando de envรญo hace clic en los รบnicos botones con tipo enviar. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); element.submit();
|
| Comando de texto | Este comando devuelve el texto interno de un elemento web. Este comando devuelve un valor de cadena como resultado. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));
String text=element.Text;
|
| Comando nombre de etiqueta | Este comando devuelve la etiqueta HTML de un elemento web. Devuelve un valor de cadena como resultado. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); String tagName = element.TagName;
|
| Comando ObtenerCSSValue: | Este mรฉtodo se utiliza para devolver el color de un elemento web en forma de cadena rgba (rojo, verde, azul y alfa). |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));
String color = element.getCSSValue;
Salidaโ Si el color del elemento es rojo, la salida serรญa rgba(255,0,0,1) |
Comandos desplegables:
Las operaciones desplegables en C# se pueden lograr utilizando la clase SelectElement.
Las siguientes son las distintas operaciones desplegables disponibles en C#.
| Nombre del comando | Descripciรณn | Sintaxis |
|---|---|---|
| Comando SeleccionarPorTexto | Este comando selecciona una opciรณn de un menรบ desplegable segรบn el texto de la opciรณn. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));
SelectElement select = new SelectElement(element);
select.SelectByText("Guru99");
|
| Comando SeleccionarPorรndice | Este comando se utiliza para seleccionar una opciรณn segรบn su รญndice. El รญndice del menรบ desplegable comienza en 0. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));
SelectElement select = new SelectElement(element);
select.SelectByIndex("4");
|
| Comando SeleccionarPorValor | Este comando se utiliza para seleccionar una opciรณn segรบn su valor de opciรณn. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));
SelectElement select = new SelectElement(element);
select.SelectByValue("Guru99");
|
| Comando de opciones | Este comando se utiliza para recuperar la lista de opciones que se muestran en un menรบ desplegable. |
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);
}
El cรณdigo anterior imprime todas las opciones en la consola dentro de un menรบ desplegable. |
| Comando es mรบltiple | Este comando se utiliza para identificar si un menรบ desplegable es un menรบ desplegable de selecciรณn mรบltiple; Un menรบ desplegable de selecciรณn mรบltiple permite al usuario seleccionar mรกs de una opciรณn en un menรบ desplegable a la vez. Este comando devuelve un valor booleano. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));
SelectElement select = new SelectElement(element);
Boolean status = select.IsMultiple();
|
| Comando DeSeleccionar Todo | Este comando se utiliza en menรบs desplegables de selecciรณn mรบltiple. Borra las opciones que ya han sido seleccionadas. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));
SelectElement select = new SelectElement(element);
select.DeSelectAll();
|
| Comando DeSelectByIndex | Este comando deselecciona un valor ya seleccionado usando su รญndice. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));
SelectElement select = new SelectElement(element);
select.DeSelectByIndex("4");
|
| Comando DeSelectByValue | Este comando deselecciona un valor ya seleccionado usando su valor. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));
SelectElement select = new SelectElement(element);
select.DeSelectByValue("Guru99");
|
| Comando DeSelectByText | Este comando deselecciona un valor ya seleccionado usando su texto. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));
SelectElement select = new SelectElement(element);
select.DeSelectByText("Guru99");
|
Ejemplos de cรณdigo
Ejemplo 1: haga clic en un enlace usando XPATH Locator:
Escenario de prueba:
- Vaya a la pรกgina web Demo Guru99 โ https://demo.guru99.com/test/guru99home/
- Maximiza la ventana
- Haga clic en el menรบ 'Pruebas'
- Cerrar el 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();
}
}
}
Ejemplo 2: ingresar datos en textoBox y haga clic en un botรณn usando el localizador XPATH:
Escenario de prueba:
- Navegue a la pรกgina de demostraciรณn de Guru 99 โ https://demo.guru99.com/test/guru99home/
- Introduzca datos en el cuadro de texto del correo electrรณnico
- Haga clic en el botรณn de registro
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("[email protected]");
signUpButton.Click();
}
}
}
Ejemplo 3: ingresar datos en textoBox y haga clic en un botรณn usando el localizador CSS:
Escenario de prueba:
- Navegue a la pรกgina de demostraciรณn de Guru 99 โ https://demo.guru99.com/test/guru99home/
- Introduzca datos en el cuadro de texto del correo electrรณnico
- Haga clic en el botรณn de registro
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("[email protected]");
signUpButton.Click();
}
}
}
Ejemplo 4: seleccione un valor en el menรบ desplegable:
Escenario de prueba:
- Navegue a la pรกgina de demostraciรณn de Guru 99 โ https://demo.guru99.com/test/guru99home/
- Haga clic en SAP este enlace
- Introduzca datos en los cuadros de texto de nombre y correo electrรณnico
- Seleccione un valor del menรบ desplegable Curso
- Cerrar el 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");
}
}
}
Resumen
- Para usar Selenium Para utilizar WebDriver con C# es necesario instalar Visual Studio.
- NUnit es el marco de pruebas unitarias compatible con Visual Studio y Selenium controlador web
- Necesitamos instalar NUnit Framework y NUnit Test Adapter en Visual Studio para poder usarlo.
- El marco NUnit se puede integrar con Selenium creando una clase de prueba NUnit y ejecutando la clase de prueba usando el marco NUnit.
- NUnit tambiรฉn permite a los evaluadores utilizar anotaciones como SetUp, Test y TearDown para realizar acciones antes y despuรฉs de ejecutar la prueba.
- Selenium Los comandos de WebDriver se pueden clasificar en comandos del navegador, comandos de elementos web y comandos desplegables.
































