Pagsubok sa Puppeteer Automation - Isang Mahusay na Patnubay ng Puppeteer Tutorial 6

Pagsubok sa Puppeteer Automation - Tampok na Larawan

Ang Puppeteer ay isang node js library based framework na magagamit bilang open-source. Maaari itong magamit para sa mga tool sa pag-scrap ng web. Ginagamit din ito para sa mga tool sa pag-automate ng pagsubok. Ngayon-isang-araw, ang paggamit ng Puppeteer ay mabilis na nadagdagan sa awtomatikong puwang ng pagsubok ng software. Pangunahing kaalaman sa linya ng utos, Javascript, at istraktura ng HTML DOM ay kinakailangan upang maunawaan ang puppeteer tutorial. Ang buong tutorial ay pinaghiwalay sa mga artikulo sa ibaba. 

Tutorial ng Puppeteer

Tosca Tutorial # 1: Pangkalahatang-ideya ng Puppeteer

Tosca Sangguni # 2: Mga variable ng Kapaligiran ng Puppeteer

Tosca Sangguni # 3: Puppeteer Web Scraping at Pangkalahatang-ideya ng Puppeteer Test Pangkalahatang-ideya

Tosca Sangguni # 4: I-install ang Puppeteer

Tosca Sangguni # 5: Sample na Puppeteer Project

Tosca Tutorial # 6: Pagsubok sa Puppeteer Automation

Sa tutorial na "Puppeteer Automation Testing" na ito, ipaliwanag namin ang detalyadong mga hakbang para sa Puppeteer Automation mula sa simula. Ang mga tampok sa ibaba ay ipapaliwanag upang maunawaan ang pagsubok ng Puppeteer Automation mula sa simula -

· I-install ang Puppeteer

· Ilunsad ang Application sa Web

· Kilalanin ang mga katangian ng object mula sa Chrome Browser

· Mga hakbang sa Pagsusumite ng Form - Magpasok ng teksto, Mag-click sa kaganapan, Pag-verify

· Nakunan ng screenshot

· Ipatupad ang mga script para sa Puppeteer Automation

Pag-aautomat ng Puppeteer

Kinakailangan ang pagsubok upang matiyak ang kalidad ng mga produktong software. Mayroong maraming antas ng pagsubok na tinukoy sa mga proseso ng pag-unlad ng software. Upang subukan ang mga pagpapaandar ng isang software, maaaring magawa nang manu-mano o sa pamamagitan ng awtomatikong proseso. Ang pangunahing layunin ng awtomatikong pagsusuri ng software ay -

  • Mabilis na ikot ng pagpapatupad ng pagsubok.
  • Iwasan ang mga pagkakataon ng mga pagkakamali ng tao.
  • Bawasan ang oras ng pagpapatupad ng pagsubok.
  • Bawasan ang oras ng siklo ng paglabas.
  • Cove higit pang pag-andar nang walang pag-kompromiso sa kalidad.
  • Ang maramihang pagpapatupad ay maaaring gawin parallelly.

 Ang Puppeteer ay isang javascript based Node library na nagbibigay ng isang mataas na antas ng application interface (API) upang makontrol ang Chrome web browser sa protokol ng Chrome DevTools. Karamihan sa mga manu-manong pagpapatakbo na isinagawa sa browser ng Chrome ay maaaring awtomatiko gamit ang Puppeteer. Kaya, ang Puppeteer ay isang mahusay na pagpipilian para sa pagsubok ng yunit sa mga application ng web nang mabilis at madaling paraan. 

Diskarte sa Pagsusuri ng Puppeteer Automation:

Ang mga hakbang na kasangkot sa Puppeteer Automation Testing ay ipinaliwanag sa ibaba - 

Hakbang1 # Kilalanin ang Ginagamit na Pangyayari sa Pagsubok:

Ipapakita namin ang sunud-sunod na diskarte sa pagganap ng automation ng Puppeteer para sa sitwasyon sa ibaba - 

· Ilunsad ang Web Browser.

· Humingi ng aplikasyon sa Amazon Web.

  • Maghanap para sa librong "Testing Book".
  • Idagdag ang libro sa cart mula sa resulta.
  • Buksan ang cart at suriin kung ang libro ay magagamit sa cart.
  • Kunan ang screen at isara ang browser.

Step2 # I-install ang Puppeteer at Lumikha ng Kaso ng Pagsubok:

Lumikha ng isang walang laman na file na javascript bilang "sample_script.js" sa isang tukoy na folder. Dito, isasaalang-alang namin ang root folder bilang SampleProject. Upang mai-install ang Puppeteer, gagamitin namin ang utos - "npm install puppeteer". Ang pamamaraan ng pag-install ay tumatagal ng ilang oras batay sa bilis ng network. Magda-download ito ng humigit-kumulang na 350MB ng data. Matapos ang pag-install, ang folder ng node_modules, na naglalaman ng iba't ibang mga bahagi ng puppeteer at package-lock.json file, ay malilikha sa sample na folder ng root ng proyekto ng Puppeteer.

Step3 # Kunan ang Mga Katangian ng Pagkakakilanlan ng Layunin sa Pagsubok:

Maaari naming makuha ang mga katangian ng pagkakakilanlan gamit ang Developers Tool ng Chrome web browser. Sinusuri ang iba't ibang mga katangian tulad ng, id, pangalan, XPath, atbp. Pipiliin namin ang tamang isa na maaaring magamit sa scripting upang maisagawa ang anumang operasyon. Sa tutorial na "Puppeteer Automation Testing" na ito, gagamitin namin ang XPath sa script. Sa ibaba mga hakbang upang sundin upang makuha ang XPATH o anumang iba pang mga pag-aari,

1. Buksan ang Mga Tool ng Developer na magagamit sa ilalim ng "Menu -> Higit pang mga tool", at pumunta sa tab na Mga Elemento.

2. Gamit ang tool ng Finder (pag-click sa arrow icon na magagamit sa kaliwang tuktok na sulok ng tab na Mga Elemento), i-highlight ang test object mula sa application. Dito, susuriin namin ang box para sa paghahanap.

Pagsubok sa Puppeteer Automation - Buksan ang tool ng Developer ng Chrome
Pagsubok sa Puppeteer Automation - Buksan ang tool ng Developer ng Chrome

3. Pag-aralan ang naka-highlight na source code upang makilala ang mga pag-aari ng pagnanasa. Upang makuha ang pag-aari ng XPATH ng object ng pagsubok, mag-right click sa seksyon na naka-highlight at mag-click sa "Copy-> Copy Xpath" upang kopyahin ang XPATH na pag-aari sa clipboard.

Pagsubok sa Puppeteer Automation - Kopyahin ang XPath
Pagsubok sa Puppeteer Automation - Kopyahin ang XPath

4. Ngayon, i-paste ang Xpath sa finder textbox at pindutin ang enter upang suriin kung ang Xpath ay nakikilala ang bagay nang kakaiba.

Pagsubok sa Puppeteer Automation - Suriin ang XPath
Pagsubok sa Puppeteer Automation - Suriin ang XPath

5. Katulad nito, kailangan nating makuha ang mga katangian ng pagkakakilanlan para sa isa pang pagsubok na bagay.

Hakbang4 # Mga Hakbang sa Pag-unlad ng Awtomatiko na Puppeteer:

Upang makumpleto ang kaso ng pagsubok, kailangan naming magsagawa ng ilang mga pagpapatakbo sa mga web page. Para sa bawat operasyon, mayroong iba't ibang mga magagamit na pamamaraan. Ang mga pamamaraan na ginagamit sa aming senaryo para sa "Puppeteer Automation Testing" ay ipinaliwanag dito.

Ilunsad ang Application - Matapos isama ang puppeteer, kailangan naming ilunsad ang browser gamit ang puppeteer — pamamaraang paglulunsad. Ang isang sanggunian ng bagay ay maaaring maipasa sa pamamaraang ito upang tukuyin para sa walang ulo o ulo na browser. Pagkatapos ay kailangan naming lumikha ng halimbawa ng web browser na kinakailangan upang mag-navigate sa URL. Dito, ginagamit ang pagpapaandar ng async upang magamit ang naghihintay na keyword upang mahawakan ang web synchronizer.

//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/');
  })()

Ang buong pagsubok ay gagawin sa isang browser na walang ulo. Kung nais naming buksan ang headful browser, kailangan naming ipasa ang object sa pamamaraan ng paglulunsad bilang "{Walang ulo: hindi totoo}".

Suriin ang pagkakaroon - Kailangan naming gamitin ang pamamaraan pahina.waitForXpath na susuriin ang pagkakaroon ng Xpath at ibabalik ang sanggunian ng pagsubok na bagay. Sa pamamagitan ng pagsubok sa sanggunian sa pagbabalik, maaari kaming magdagdag ng isang punto ng pag-verify sa kaso ng pagsubok.

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

Ipasok ang Data - Gamit ang uri paraan ng sanggunian ng bagay na iyon, maaari naming ipasok ang teksto.

await searchBox.type("Testing Book");

Mag-click sa Element  - Katulad nito, gamit ang mag-click paraan ng anumang sanggunian ng bagay, maaari naming maisagawa ang mga pagpapatakbo ng pag-click.

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

I-print ang mensahe sa console  - Gamit ang pamamaraan console.log, maaari naming mai-print ang anumang mensahe sa console bilang output.

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

Sumangguni sa bagong tab - Gamit ang mga pamamaraan pahina.target at browser.waitforTarget, maaari nating suriin at iimbak ang sanggunian tungkol sa bagong tab sa isang variable.

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

Kunan ang Screenshot - Gamit ang pamamaraan pahina Screenshot, isang snapshot ng partikular na pahina ang nakuha at nai-save ayon sa ibinigay na pangalan ng file bilang isang argument.

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

Isara ang Pahina at Browser - Gamit ang pamamaraan malapit, maaari nating isara ang parehong web page at ang browser.

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

Oras ng Paghintay - Sa ilang mga kaso, may kinakailangang maghintay para sa paglo-load ng pahina o pagtatapos ng anumang umaasang gawain; kailangan naming i-pause ang pagpapatupad para sa isang paunang natukoy na oras. Upang maisagawa ito, maaari naming gamitin ang pahina.waitForTimeout paraan na maaaring i-pause ang pagpapatupad batay sa halaga (sa mili-segundo) na dumaan sa argumento.

await page.waitForTimeout(2000);

Ngayon natutunan namin ang tungkol sa pangunahing mga teknikal na hakbang upang ma-automate ang aming pangyayari sa pag-andar. Batay sa kaalaman, maaari kaming dumaan sa kaso ng pagsubok sa Puppeteer Automation sa ibaba. Ang detalyadong pangkalahatang ideya ng pinakakaraniwang ginagamit na mga klase at pamamaraan ay ipapaliwanag sa mga kasunod na post.

/**
 * @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)
}

Hakbang5 # Pagpapatupad ng Pagsubok ng Puppeteer Automation:

Maaari nating simulan ang pagpapatupad gamit ang utos node sample_script.js sa pamamagitan ng prompt ng utos. Sa panahon ng pagpapatupad, bubuksan ang browser ng Chromium at awtomatikong isasagawa ang mga hakbang sa pag-andar at maiimbak ang screenshot ng huling pahina. Ang screenshot at ang output ng console ay magiging hitsura sa ibaba.

Pagsubok sa Puppeteer Automation - Output ng Console
Pagsubok sa Puppeteer Automation - Output ng Console
Pagsubok sa Pag-aautomat ng Puppeteer - Nakunan ng Screen
Pagsubok sa Pag-aautomat ng Puppeteer - Nakunan ng Screen

Paghihinuha:

Sa buong Tutorial ng Pagsubok na Puppeteer Automation na ito, natutunan namin ang tungkol sa detalyadong mga hakbang sa Puppeteer Automation Testing. Sa susunod na tutorial ng Puppeteer, malalaman natin ang tungkol sa detalyadong pangkalahatang-ideya ng pinakamadalas na ginagamit na mga klase at pamamaraan ng puppeteer. Paki-klik dito upang bisitahin ang sanggunian portal para sa Puppeteer Tutorial na ito. 

Tungkol kay K Mondal

Pagsubok sa Puppeteer Automation - Isang Mahusay na Patnubay ng Puppeteer Tutorial 6Kumusta, ako si K. Mondal, naiugnay ako sa isang nangungunang samahan. Mayroon akong 12+ taon na karanasan sa pagtatrabaho sa mga domain hal, pag-unlad ng application, pagsubok sa automation, IT Consultant. Lubhang interesado akong matuto ng iba't ibang mga teknolohiya. Narito ako upang matupad ang aking hangarin at kasalukuyang nagbibigay ng kontribusyon bilang isang May-akda at Developer ng Website kapwa sa LambdaGeeks.
Kumonekta sa LinkedIn- https://www.linkedin.com/in/kumaresh-mondal/

Mag-iwan ng komento

Ang iyong email address ay hindi ilalathala. Ang mga kailangang field ay may markang *

en English
X