Pruebas de automatización de titiriteros: una excelente guía del tutorial para titiriteros 6

Prueba de automatización de titiriteros - Imagen de función

Puppeteer es un marco basado en la biblioteca de node js que está disponible como código abierto. Se puede utilizar para herramientas de raspado web. También se utiliza para herramientas de automatización de pruebas. Hoy en día, el uso de Puppeteer está aumentando rápidamente en el espacio de prueba de software automatizado. Se requieren conocimientos básicos de la línea de comandos, Javascript y la estructura DOM de HTML para comprender el tutorial de titiritero. El tutorial completo se divide en los siguientes artículos. 

Tutorial de titiritero

Tutorial de Tosca # 1: Descripción general del titiritero

Tosca Tutorial # 2: Variables de entorno del titiritero

Tosca Tutorial # 3: Descripción general de la automatización de pruebas de titiritero y raspado web de titiritero

Tosca Tutorial # 4: Instalar Titiritero

Tosca Tutorial # 5: Proyecto de muestra de titiritero

Tutorial de Tosca # 6: Pruebas de automatización de titiriteros

En este tutorial de "Prueba de automatización de titiriteros", explicaremos los pasos detallados para la automatización de titiriteros desde el principio. A continuación, se explicarán las características para comprender las pruebas de automatización de titiriteros desde cero:

· Instalar Puppeteer

· Lanzar aplicación web

· Identificar las propiedades del objeto desde el navegador Chrome

· Pasos de envío de formularios: introducir texto, hacer clic en evento, verificación

· Captura de pantalla

· Ejecutar scripts para la automatización de titiriteros

Automatización del titiritero

Se requieren pruebas para garantizar la calidad de los productos de software. Hay múltiples niveles de prueba definidos en los procesos de desarrollo de software. Para probar las funcionalidades de un software, se puede hacer de forma manual o mediante un proceso automatizado. Los principales propósitos de las pruebas de software automatizadas son:

  • Ciclo de ejecución de prueba rápido.
  • Evite las posibilidades de errores humanos.
  • Reduzca el tiempo de ejecución de la prueba.
  • Reducir el tiempo del ciclo de liberación.
  • Cree más funcionalidad sin comprometer la calidad.
  • La ejecución múltiple se puede realizar en paralelo.

 Puppeteer es una biblioteca de nodo basada en javascript que ofrece una interfaz de aplicación (API) de alto nivel para controlar el navegador web Chrome a través del protocolo Chrome DevTools. La mayoría de las operaciones manuales realizadas en el navegador Chrome se pueden automatizar utilizando Puppeteer. Por lo tanto, Puppeteer es una buena opción para realizar pruebas unitarias en aplicaciones web de forma rápida y sencilla. 

Enfoque de prueba de automatización de titiriteros:

Los pasos involucrados con las pruebas de automatización de titiriteros se explican a continuación: 

Paso 1 # Identificar el escenario de prueba funcional:

Mostraremos el enfoque paso a paso para realizar la automatización Titiritero para el siguiente escenario: 

· Inicie el navegador web.

· Invocar la aplicación web de Amazon.

  • Busque el libro "Testing Book".
  • Agregue el libro al carrito desde el resultado.
  • Abra el carrito y compruebe si el libro está disponible en el carrito.
  • Capture la pantalla y cierre el navegador.

Step2 # Instale Puppeteer y cree un caso de prueba:

Cree un archivo javascript vacío como "sample_script.js" en una carpeta específica. Aquí, consideraremos la carpeta raíz como SampleProject. Para instalar Puppeteer, usaremos el comando - “npm install puppeteer”. El procedimiento de instalación lleva algún tiempo según la velocidad de la red. Descargará aproximadamente 350 MB de datos. Después de la instalación, la carpeta node_modules, que contiene diferentes componentes de puppeteer y el archivo package-lock.json, se creará en la carpeta raíz del proyecto Puppeteer de muestra.

Paso 3 # Capturar propiedades de identificación del objeto de prueba:

Podemos capturar las propiedades de identificación utilizando la herramienta para desarrolladores del navegador web Chrome. Analizando las diferentes propiedades como id, nombre, XPath, etc., elegiremos la correcta que se puede utilizar en el scripting para realizar cualquier operación. En este tutorial de "Pruebas de automatización de titiriteros", usaremos XPath en el script. A continuación, los pasos a seguir para obtener XPATH o cualquier otra propiedad,

1. Abra Herramientas de desarrollo que están disponibles en "Menú -> Más herramientas" y vaya a la pestaña Elementos.

2. Con la herramienta Finder (haciendo clic en el icono de flecha disponible en la esquina superior izquierda de la pestaña Elementos), resalte el objeto de prueba de la aplicación. Aquí, inspeccionaremos el cuadro de búsqueda.

Pruebas de automatización de titiriteros: herramienta para desarrolladores abierta de Chrome
Pruebas de automatización de titiriteros: herramienta para desarrolladores abierta de Chrome

3. Analice el código fuente resaltado para identificar las propiedades deseadas. Para obtener la propiedad XPATH del objeto de prueba, haga clic con el botón derecho en la sección resaltada y haga clic en "Copiar-> Copiar Xpath" para copiar la propiedad XPATH en el portapapeles.

Prueba de automatización de titiriteros - Copiar XPath
Prueba de automatización de titiriteros - Copiar XPath

4. Ahora, pegue el XPath en el cuadro de texto del buscador y presione enter para verificar si el XPath identifica el objeto de manera única.

Prueba de automatización de titiriteros: comprobar XPath
Pruebas de automatización de titiriteros: comprobar XPath

5. De manera similar, también necesitamos capturar las propiedades de identificación de otro objeto de prueba.

Step4 # Pasos de desarrollo de automatización de titiritero:

Para completar el caso de prueba, necesitamos realizar ciertas operaciones en las páginas web. Para cada una de las operaciones, hay diferentes métodos disponibles. Los métodos que se utilizan en nuestro escenario para "Pruebas de automatización de titiriteros" se explican aquí.

Aplicación de inicio - Después de incluir el titiritero, debemos iniciar el navegador utilizando el método titiritero: iniciar. Se puede pasar una referencia de objeto a este método para definir un navegador headless o headful. Luego, necesitamos crear la instancia del navegador web que se requiere para navegar por la URL. Aquí, la función async se usa para usar la palabra clave await para manejar el sincronizador web.

//Include the puppeteer package
const puppeteer = require('puppeteer'); 
 (async () => {
    //launching the headless browser
    const browser = await puppeteer.launch({ headless: true });
   //Create instance of the browser
    const page = await browser.newPage();
   //Navigate to the url
    await page.goto('https://www.amazon.in/');
  })()

Toda la prueba se realizará en un navegador sin cabeza. Si queremos abrir el navegador completo, debemos pasar el objeto al método de lanzamiento como "{Sin cabeza: falso}".

Comprobar la existencia - Necesitamos usar el método page.waitForXpath que verificará la existencia del Xpath y devolverá la referencia del objeto de prueba. Al probar la referencia de devolución, podemos agregar un punto de verificación en el caso de prueba.

	let searchBox = await page.waitForXPath("//*[@id='twotabsearchtextbox']",{ visible: true });
	if (searchBox === null) //Verification of the test object
	{
		console.log('Amazon screen is not displayed');
	}

Introducir datos - Utilizando la tipo método de esa referencia de objeto, podemos ingresar el texto.

await searchBox.type("Testing Book");

Haga clic en Elemento  - Del mismo modo, utilizando el clic método de cualquier objeto de referencia, podemos realizar operaciones de clic.

let btnSearch = await page.waitForXPath("//*/input[@id='nav-search-submit-button']",{visible:true });
btnSearch.click();

Imprimir mensaje en la consola  - Usando el método console.log, podemos imprimir cualquier mensaje en la consola como salida.

console.log(‘Console lag has been generated’);

Consulte la nueva pestaña - Usando los métodos page.target y browser.waitforTarget, podemos verificar y almacenar la referencia sobre la nueva pestaña en una variable.

	const pageTarget = page.target();
	const newTarget = await browser.waitForTarget(target => target.opener() === pageTarget);
	//get the new page object:
	const page2 = await newTarget.page();

Captura de pantalla - Usando el método página. Captura de pantalla, se ha tomado una instantánea de la página en particular y se guarda según el nombre de archivo proporcionado como argumento.

await page.screenshot({ path: ‘screenshot1.png’ });

Cerrar página y navegador - Usando el método close, podemos cerrar tanto la página web como el navegador.

	await page.close();
	await browser.close();

Tiempo de espera - En ciertos casos, existe el requisito de esperar a que se cargue la página o al final de cualquier tarea dependiente; necesitamos pausar la ejecución por un tiempo predefinido. Para realizar esto, podemos usar la página .waitForTimeout método que puede pausar la ejecución según el valor (en milisegundos) pasado a través del argumento.

await page.waitForTimeout(2000);

Ahora hemos aprendido los pasos técnicos básicos para automatizar nuestro escenario funcional. Basándonos en el conocimiento, podemos revisar el caso de prueba de automatización de titiriteros a continuación. La descripción detallada de las clases y métodos más utilizados se explicará en publicaciones posteriores.

/**
 * @name Amazon search
 */
const puppeteer = require('puppeteer');
const reportPath = 'C:\\LambdaGeeks\\puppteer_proj_sample\\output\\';
const screenshot = 'screen1.png';
// Used to export the file into a .docx file
try {
  (async () => {
    const browser = await puppeteer.launch({ headless: false });
    const pageNew = await browser.newPage()
    await pageNew.setViewport({ width: 1280, height: 800 });
    await pageNew.goto('https://www.amazon.in/');
	//Enter Search criteria
	let searchBox = await page.waitForXPath("//*[@id='twotabsearchtextbox']",{ visible: true });
	if (searchBox === null)
	{
		console.log('Amazon screen is not displayed');
	}
	else{		
		await searchBox.type("Testing Book");
		console.log('Search criteria has been entered');
	} 		
	//Clicked on search button
	let btnSearch = await pageNew.waitForXPath("//*/input[@id='nav-search-submit-button']",{ visible: true });
	if (btnSearch === null)
	{
		console.log('Search button is not showing');
	}
	else{
		await btnSearch.click();
		console.log('Clicked on search button');
	}	
	//Click on specific search result
	let myBook = await pageNew.waitForXPath("//*[contains(text(),'Selenium Testing Tools Cookbook Second Edition')]",{ visible: true })
	if (myBook === null)
	{
		console.log('Book is not available');
	}
	else{
		await myBook.click();
		console.log('Click on specific book to order');
	} 	
	// Identify if the new tab has opened
	const pageTarget = pageNew.target();
	const newTarget = await browser.waitForTarget(target => target.opener() === pageTarget);
	//get the new page object:
	const page2 = await newTarget.pageNew();	
	await page2.setViewport({ width: 1280, height: 800 });
	
	//Add to cart
	let addToCart = await page2.waitForXPath("//*/input[@id='add-to-cart-button']",{ visible: true });
	if (addToCart === null)
	{
		console.log('Add to cart button is not available');
	}
	else{
		console.log('Click on add to Cart button');
		await addToCart.click();		
	} 		
	//Verify add to cart process	
	let successMessage = await page2.waitForXPath("//*[contains(text(),'Added to Cart')]",{ visible: true });
	if (successMessage === null)
	{
		console.log('Item is not added to cart');
	}
	else{
		console.log('Item is added to cart successfully');		
	} 		
	// Capture no of cart
	let cartCount = await page2.waitForXPath("//*/span[@id='nav-cart-count']",{ visible: true});
	let value = await page2.evaluate(el => el.textContent, cartCount)
	console.log('Cart count: ' + value);
	cartCount.focus();
	await page2.screenshot({ path: screenshot });
	
	await pageNew.waitForTimeout(2000);    
	await page2.close();
	await pageNew.close();
    await browser.close();
  })()
} catch (err) {
  console.error(err)
}

Paso 5 # Ejecución de la prueba de automatización de titiritero:

Podemos iniciar la ejecución usando el comando nodo sample_script.js a través del símbolo del sistema. Durante la ejecución, el navegador Chromium se abrirá y automáticamente realizará los pasos funcionales y almacenará la captura de pantalla de la página final. La captura de pantalla y la salida de la consola se verán a continuación.

Prueba de automatización de titiritero - Salida de consola
Prueba de automatización de titiritero - Salida de consola
Prueba de automatización de titiritero: pantalla capturada
Prueba de automatización de titiriteros: pantalla capturada

Conclusión:

A lo largo de este Tutorial de pruebas de automatización de titiriteros, hemos aprendido los pasos detallados sobre las pruebas de automatización de titiriteros. En el próximo tutorial de titiritero, aprenderemos sobre la descripción detallada de las clases y métodos de titiritero más utilizados. Por favor haz click aquí para visitar el portal de referencia de este Tutorial de titiritero. 

Sobre K Mondal

Hola, soy K. Mondal, estoy asociado con una organización líder. Tengo más de 12 años de experiencia laboral en varios dominios, por ejemplo, desarrollo de aplicaciones, pruebas de automatización, consultor de TI. Estoy muy interesado en aprender diferentes tecnologías. Estoy aquí para cumplir con mi aspiración y actualmente contribuyo como autor y desarrollador de sitios web en LambdaGeeks.
Conéctese a LinkedIn- https://www.linkedin.com/in/kumaresh-mondal/

Deja un comentario

Tu dirección de correo electrónico no será publicada.Los campos obligatorios están marcados *