A Puppeteer egy csomópont js könyvtár alapú keretrendszer, amely nyílt forráskódúként érhető el. Használható webkaparó eszközökhöz. Tesztautomatizálási eszközökhöz is használják. Napjainkban a Puppeteer használata rohamosan növekszik az automatizált szoftvertesztelési területen. A megértéshez alapvető ismeretek szükségesek a parancssorról, a Javascriptről és a HTML DOM-struktúráról bábos bemutató. A teljes oktatóanyag az alábbi cikkekre van felosztva.
Bábos bemutató
1. Tosca oktatóanyag: Bábos áttekintése
Tosca oktatói # 2: Bábos környezeti változók
Tosca oktatói # 3: A Puppeteer Web Scraping és Puppeteer Test Automation áttekintése
Tosca oktatói # 4: Telepítse a Puppeteer programot
Tosca oktatói # 5: Minta bábos projekt
6. Tosca oktatóanyag: Bábos automatizálási tesztelés
Ebben a „Bábos automatizálási tesztelés” oktatóanyagban a kezdetektől fogva elmagyarázzuk a bábos automatizálás részletes lépéseit. Az alábbiakban ismertetjük azokat a funkciókat, amelyek segítségével a bábjátékos automatizálási tesztelést a semmiből megérthetjük –
· Telepítse a Puppeteer programot
· Indítsa el a webalkalmazást
· Az objektum tulajdonságainak azonosítása a Chrome böngészőből
· Az űrlap beküldésének lépései – Szöveg beírása, eseményre kattintás, ellenőrzés
· Képernyőkép rögzítése
· Szkriptek végrehajtása a Puppeteer Automation számára
Bábos automatizálás
A szoftvertermékek minőségének biztosítása érdekében tesztelésre van szükség. A szoftverfejlesztési folyamatokban a tesztelésnek több szintje van meghatározva. Egy szoftver funkcióinak tesztelése történhet manuálisan vagy automatizált folyamaton keresztül. Az automatizált szoftverteszt fő céljai:
- Gyors tesztvégrehajtási ciklus.
- Kerülje el az emberi hibák lehetőségét.
- Csökkentse a teszt végrehajtásának időzítését.
- Csökkentse a kioldási ciklus idejét.
- Fedezzen fel több funkcionalitást anélkül, hogy kompromisszumot kellene kötnie a minőséggel.
- Több végrehajtás is elvégezhető párhuzamosan.
A Puppeteer egy javascript alapú csomópont-könyvtár, amely magas szintű alkalmazási felületet (API) biztosít a Chrome webböngésző vezérléséhez a Chrome DevTools protokollon keresztül. A Chrome böngészőben végrehajtott kézi műveletek többsége automatizálható a Puppeteer segítségével. Tehát a Puppeteer jó választás webalkalmazásokon végzett egységtesztelésekhez, gyors és egyszerűbb módon.
Bábjátékos automatizálási tesztelési megközelítés:
A Puppeteer Automation Testing lépéseit alább ismertetjük –
Step1# Határozza meg a funkcionális teszt forgatókönyvét:
Megmutatjuk lépésről lépésre a Puppeteer automatizálás végrehajtását az alábbi forgatókönyvben -
· Indítsa el a webböngészőt.
· Az Amazon webalkalmazás elindítása.
- Keresse meg a „Tesztkönyv” című könyvet.
- Az eredményből tegye a könyvet a kosárba.
- Nyissa ki a kosarat, és ellenőrizze, hogy a könyv elérhető-e a kosárban.
- Képernyő rögzítése és a böngésző bezárása.
2. lépés: Telepítse a Puppeteert és hozzon létre tesztesetet:
Hozzon létre egy üres JavaScript-fájlt „sample_script.js” néven egy adott mappában. Itt a gyökérmappát mintaprojektnek tekintjük. A Puppeteer telepítéséhez az „npm install puppeteer” parancsot fogjuk használni. A telepítési folyamat a hálózat sebességétől függően eltart egy ideig. Körülbelül 350 MB adatot fog letölteni. A telepítés után a különböző puppeteer összetevőket és a package-lock.json fájlt tartalmazó node_modules mappa létrejön a minta Puppeteer projekt gyökérmappájában.
Step3# A tesztobjektum rögzítési azonosító tulajdonságai:
Az azonosítási tulajdonságokat a Chrome webböngésző Developers Tool segítségével rögzíthetjük. A különböző tulajdonságok, például id, név, XPath stb. elemzésekor kiválasztjuk a megfelelőt, amely használható a szkriptben bármilyen művelet végrehajtására. Ebben a „Puppeteer Automation Testing” oktatóanyagban az XPath-ot fogjuk használni a szkriptben. Az XPATH vagy bármely más tulajdonság beszerzéséhez kövesse az alábbi lépéseket,
1. Nyissa meg a Fejlesztői eszközöket, amely a „Menü -> További eszközök” alatt érhető el, és lépjen az Elemek fülre.
2. A Finder eszközzel (az Elemek lap bal felső sarkában található nyíl ikonra kattintva) jelölje ki a tesztobjektumot az alkalmazásból. Itt megvizsgáljuk a keresőmezőt.

3. Elemezze a kiemelt forráskódot a vágy tulajdonságainak azonosításához. A tesztobjektum XPATH tulajdonságának beszerzéséhez kattintson a jobb gombbal a kiemelt szakaszra, majd kattintson a „Másolás-> Xpath másolása” elemre az XPATH tulajdonság vágólapra másolásához.

4. Most illessze be az Xpath-ot a kereső szövegmezőbe, és nyomja meg az Enter billentyűt, hogy ellenőrizze, hogy az Xpath egyedileg azonosítja-e az objektumot.

5. Hasonlóképpen egy másik tesztobjektum azonosító tulajdonságait is rögzítenünk kell.
Step4# Puppeteer Automation fejlesztési lépések:
A teszteset befejezéséhez bizonyos műveleteket kell végrehajtanunk a weboldalakon. Mindegyik művelethez különböző módszerek állnak rendelkezésre. A „Bábos automatizálási tesztelés” forgatókönyvünkben használt módszereket itt ismertetjük.
Alkalmazás indítása – A bábjátékos felvétele után el kell indítanunk a böngészőt a bábjátékos-indítás módszerrel. Objektumhivatkozás átadható ennek a metódusnak a fej nélküli vagy fej nélküli böngésző meghatározásához. Ezután létre kell hoznunk a webböngésző példányát, amely szükséges az URL-ben való navigáláshoz. Itt az async funkciót a await kulcsszó használatára használják a webszinkronizáló kezelésére.
//Tartalmazza a puppeteer csomagot const puppeteer = request('puppeteer'); (async () => { //a fej nélküli böngésző elindítása const browser = await puppeteer.launch({ headless: true }); //A böngésző const oldal példányának létrehozása = await browser.newPage(); //Lépjen a url várja a page.goto('https://www.amazon.in/'); })()
A teljes tesztelés egy fej nélküli böngészőben történik. Ha meg akarjuk nyitni a fejes böngészőt, át kell adnunk az objektumot a as indító metódusnak „{fej nélküli: hamis}”.
Ellenőrizze a létezést – Használnunk kell a módszert page.waitForXpath amely ellenőrzi az Xpath létezését és visszaadja a tesztobjektum hivatkozását. A visszatérési hivatkozás tesztelésével a tesztesetben egy ellenőrző pontot adhatunk hozzá.
let searchBox = várja az oldalt.waitForXPath("//*[@id='twotabsearchtextbox']",{ látható: igaz }); if (searchBox === null) //A tesztobjektum ellenőrzése { console.log('Az Amazon képernyője nem jelenik meg'); }
Adja meg az adatokat - Használni a típus metódusát az objektumhivatkozáshoz, beírhatjuk a szöveget.
várjon searchBox.type("Tesztkönyv");
Kattintson az elemre – Hasonlóképpen a kettyenés bármely objektum hivatkozás metódusával kattintási műveleteket végezhetünk.
let btnSearch = várja az oldalt.waitForXPath("//*/input[@id='nav-search-submit-button']",{visible:true }); btnSearch.click();
Üzenet nyomtatása a konzolon – A módszer segítségével konzol.napló, bármilyen üzenetet kinyomtathatunk a konzolban kimenetként.
console.log('Konzol késés generálva');
Lásd az új lapot – A módszerek alkalmazása page.target és browser.waitforTarget, ellenőrizhetjük és egy változóban tárolhatjuk az új lapra vonatkozó hivatkozást.
const pageTarget = page.target(); const newTarget = várja böngészőt.waitForTarget(cél => target.opener() === pageTarget); //az új oldal objektum lekérése: const page2 = await newTarget.page();
Képernyőkép készítése – A módszer segítségével oldalon. Képernyőkép, pillanatfelvétel készült az adott oldalról, és mentse az argumentumként megadott fájlnév szerint.
await page.screenshot({ elérési út: 'screenshot1.png' });
Zárja be az oldalt és a böngészőt – A módszer segítségével közel, bezárhatjuk a weboldalt és a böngészőt is.
oldalra vár.close(); várjon böngésző.close();
Várakozási idő – Bizonyos esetekben meg kell várni az oldal betöltését vagy bármely függő feladat befejezését; le kell állítani a végrehajtást egy előre meghatározott időre. Ennek végrehajtásához használhatjuk az oldal.waitForTimeout metódus, amely szüneteltetheti a végrehajtást az argumentumban átadott érték (mili-másodpercben) alapján.
await page.waitForTimeout(2000);
Most megismertük a funkcionális forgatókönyvünk automatizálásának alapvető technikai lépéseit. Az ismeretek alapján az alábbiakban végigjárhatjuk a Puppeteer Automation tesztesetet. A leggyakrabban használt osztályok és módszerek részletes áttekintése a következő bejegyzésekben lesz elmagyarázva.
/** * @name Amazon keresés */ const puppeteer = request('puppeteer'); const reportPath = 'C:\\LambdaGeeks\\puppteer_proj_sample\\output\\'; const screenshot = 'screen1.png'; // A fájl exportálására .docx fájlba try { (async () => { const browser = await puppeteer.launch({ headless: false }); const pageNew = await browser.newPage() await pageNew.setViewport( { szélesség: 1280, magasság: 800 }); await pageNew.goto('https://www.amazon.in/'); //Adja meg a keresési feltételeket let searchBox = await page.waitForXPath("//*[@id ='twotabsearchtextbox']",{ látható: igaz }); if (searchBox === null) { console.log('Az Amazon képernyője nem jelenik meg'); } else{ await searchBox.type("Tesztkönyv"); console.log('A keresési feltételek megadva'); } //A keresés gombra kattintva hagyja, hogy a btnSearch = await pageNew.waitForXPath("//*/input[@id='nav-search-submit-button']", { látható: igaz }); if (btnSearch === null) { console.log('A keresés gomb nem jelenik meg'); } else{ await btnSearch.click(); console.log('A keresés gombra kattintott') ; } //Kattintson egy adott keresési eredményre, hagyja, hogy myBook = várja az oldaltNew.waitForXPath("//*[contains(text(),'Selenium Testing Tools Cookbook Second Edition')]",{ látható: igaz}) if (myBook === null) { console.log('A könyv nem elérhető'); } else{ várja myBook.click(); console.log('Kattintson az adott könyvre a megrendeléshez'); } // Annak megállapítása, hogy az új lap megnyílt-e const pageTarget = pageNew.target(); const newTarget = várja böngészőt.waitForTarget(cél => target.opener() === pageTarget); //az új oldal objektum lekérése: const page2 = await newTarget.pageNew(); await page2.setViewport({ szélesség: 1280, magasság: 800 }); //Kosárba helyezés let addToCart = await page2.waitForXPath("//*/input[@id='add-to-cart-button']",{ látható: igaz }); if (addToCart === null) { console.log('Kosárba helyezés gomb nem érhető el'); } else{ console.log('Kattintson a Kosárba tétel gombra'); vár addToCart.click(); } //A kosárba tétel folyamatának ellenőrzése let successMessage = await page2.waitForXPath("//*[contains(text(),'Hozzáadva a kosárhoz')]",{ látható: igaz }); if (successMessage === null) { console.log('Az áru nincs hozzáadva a kosárhoz'); } else{ console.log('Az áru sikeresen bekerült a kosárba'); } // Kosár számának rögzítése let cartCount = await page2.waitForXPath("//*/span[@id='nav-cart-count']",{ látható: igaz}); let value = wait page2.evaluate(el => el.textContent, cartCount) console.log('Kosárszám: ' + érték); cartCount.focus(); await page2.screenshot({ elérési út: képernyőkép }); await pageNew.waitForTimeout(2000); várj oldalra2.close(); wait pageNew.close(); várjon böngésző.close(); })() } catch (err) { console.error(err) }
5. lépés # Puppeteer automatizálási teszt végrehajtása:
A végrehajtást a paranccsal kezdeményezhetjük csomópont sample_script.js a parancssoron keresztül. A végrehajtás során a Chromium böngésző megnyílik, és automatikusan végrehajtja a funkcionális lépéseket, és eltárolja az utolsó oldal képernyőképét. A képernyőkép és a konzol kimenete az alábbiak szerint fog kinézni.


Következtetés:
Ebben a bábjátékos automatizálási tesztelési oktatóanyagban megismerkedtünk a bábjátékos automatizálási tesztelés részletes lépéseivel. A következő Bábos oktatóanyagban a leggyakrabban használt bábos osztályok és módszerek részletes áttekintését ismerjük meg. kérem kattintson itt hogy látogassa meg a Bábos oktatóprogram referenciaportálját.