Testen der Puppeteer-Automatisierung: Lernprogramm 6

Der Puppeteer ist ein auf der Node JS-Bibliothek basierendes Framework, das als Open Source verfügbar ist. Es kann für Web-Scraping-Tools verwendet werden. Es wird auch für Testautomatisierungstools verwendet. Heutzutage nimmt die Nutzung von Puppeteer im Bereich der automatisierten Softwaretests rapide zu. Zum Verständnis sind Grundkenntnisse der Befehlszeile, Javascript und der HTML-DOM-Struktur erforderlich Puppenspieler-Tutorial. Das gesamte Tutorial ist in die folgenden Artikel unterteilt. 

Puppenspieler Tutorial

Tosca Tutorial # 1: Puppenspieler Übersicht

Tosca Dein Thema # 2: Puppenspieler-Umgebungsvariablen

Tosca Dein Thema # 3: Übersicht über Puppenspieler-Web-Scraping und Puppenspieler-Testautomatisierung

Tosca Dein Thema # 4: Installieren Sie Puppenspieler

Tosca Dein Thema # 5: Beispiel eines Puppenspielerprojekts

Tosca Tutorial # 6: Puppenspieler-Automatisierungstests

In diesem Tutorial zum Testen der Puppenspielautomatisierung werden die detaillierten Schritte für die Puppenspielautomatisierung von Anfang an erläutert. Die folgenden Funktionen werden erläutert, um das Testen von Puppeteer Automation von Grund auf zu verstehen.

· Puppenspieler installieren

· Starten Sie die Webanwendung

· Identifizieren Sie Objekteigenschaften im Chrome-Browser

· Schritte zum Senden von Formularen - Geben Sie Text ein, klicken Sie auf Ereignis, Bestätigung

· Screenshot-Aufnahme

· Führen Sie Skripte für Puppeteer Automation aus

Puppenspielautomatisierung

Tests sind erforderlich, um die Qualität von Softwareprodukten sicherzustellen. In den Softwareentwicklungsprozessen sind mehrere Testebenen definiert. Das Testen der Funktionen einer Software kann manuell oder durch einen automatisierten Prozess erfolgen. Die Hauptziele des automatisierten Softwaretests sind:

  • Schneller Testausführungszyklus.
  • Vermeiden Sie die Möglichkeit menschlicher Fehler.
  • Reduzieren Sie den Testausführungszeitpunkt.
  • Reduzieren Sie die Release-Zykluszeit.
  • Bieten Sie mehr Funktionalität, ohne Kompromisse bei der Qualität einzugehen.
  • Die mehrfache Ausführung kann parallel erfolgen.

 Puppeteer ist eine auf Javascript basierende Knotenbibliothek, die eine allgemeine Anwendungsschnittstelle (API) zur Steuerung des Chrome-Webbrowsers über das Chrome DevTools-Protokoll bietet. Die meisten manuellen Vorgänge im Chrome-Browser können mit Puppeteer automatisiert werden. Daher ist der Puppenspieler eine gute Wahl für Unit-Tests in Webanwendungen auf schnelle und einfache Weise. 

Testansatz für Puppenspielautomatisierung:

Die Schritte zum Testen der Puppenspielautomatisierung werden nachfolgend erläutert. 

Schritt 1 # Funktionstestszenario identifizieren:

Wir zeigen den schrittweisen Ansatz zur Durchführung der Puppenspieler-Automatisierung für das folgende Szenario: 

· Starten Sie den Webbrowser.

· Rufen Sie die Amazon-Webanwendung auf.

  • Suchen Sie nach dem Buch „Testing Book“.
  • Fügen Sie das Buch aus dem Ergebnis in den Warenkorb.
  • Öffnen Sie den Warenkorb und prüfen Sie, ob das Buch im Warenkorb verfügbar ist.
  • Bildschirm erfassen und Browser schließen.

Schritt 2 # Puppenspieler installieren und Testfall erstellen:

Erstellen Sie eine leere Javascript-Datei als "sample_script.js" in einem bestimmten Ordner. Hier betrachten wir den Stammordner als SampleProject. Um Puppeteer zu installieren, verwenden wir den Befehl "npm install Puppeteer". Der Installationsvorgang dauert abhängig von der Netzwerkgeschwindigkeit einige Zeit. Es werden ungefähr 350 MB Daten heruntergeladen. Nach der Installation wird der Ordner node_modules, der verschiedene Puppeteer-Komponenten und die Datei package-lock.json enthält, im Stammverzeichnis des Puppeteer-Beispielprojekts erstellt.

Schritt 3 # Identifikationseigenschaften des Testobjekts erfassen:

Wir können die Identifikationseigenschaften mit dem Developers Tool des Chrome-Webbrowsers erfassen. Wenn wir die verschiedenen Eigenschaften wie ID, Name, XPath usw. analysieren, wählen wir die richtige aus, die in der Skripterstellung zum Ausführen von Vorgängen verwendet werden kann. In diesem Tutorial zum Testen der Puppenspielautomatisierung verwenden wir den XPath im Skript. Führen Sie die folgenden Schritte aus, um XPATH oder andere Eigenschaften zu erhalten:

1. Öffnen Sie die unter "Menü -> Weitere Tools" verfügbaren Entwicklertools und wechseln Sie zur Registerkarte "Elemente".

2. Markieren Sie mit dem Finder-Werkzeug (Klicken Sie auf das Pfeilsymbol in der linken oberen Ecke der Registerkarte Elemente) das Testobjekt in der Anwendung. Hier überprüfen wir das Suchfeld.

Puppenspieler-Automatisierungstests - Öffnen Sie das Chrome Developer Tool
Puppenspieler-Automatisierungstests - Öffnen Sie das Chrome Developer Tool

3. Analysieren Sie den hervorgehobenen Quellcode, um die gewünschten Eigenschaften zu identifizieren. Um die XPATH-Eigenschaft des Testobjekts abzurufen, klicken Sie mit der rechten Maustaste auf den markierten Abschnitt und klicken Sie auf "Kopieren-> Xpfad kopieren", um die XPATH-Eigenschaft in die Zwischenablage zu kopieren.

Puppenspieler-Automatisierungstests - Kopieren Sie XPath
Puppenspieler-Automatisierungstests - Kopieren Sie XPath

4. Fügen Sie nun den Xpath in das Finder-Textfeld ein und drücken Sie die Eingabetaste, um zu überprüfen, ob der Xpath das Objekt eindeutig identifiziert.

Puppenspieler-Automatisierungstests - Überprüfen Sie XPath
Puppenspieler-Automatisierungstests - Überprüfen Sie XPath

5. Ebenso müssen wir die Identifikationseigenschaften auch für ein anderes Testobjekt erfassen.

Schritt 4 # Entwicklungsschritte für die Puppenspielautomatisierung:

Um den Testfall abzuschließen, müssen wir bestimmte Vorgänge auf Webseiten ausführen. Für jede Operation stehen verschiedene Methoden zur Verfügung. Die Methoden, die in unserem Szenario für „Puppenspieler-Automatisierungstests“ verwendet werden, werden hier erläutert.

Programm starten - Nachdem wir den Puppenspieler aufgenommen haben, müssen wir den Browser mit der Puppenspieler-Startmethode starten. Eine Objektreferenz kann an diese Methode übergeben werden, um sie für einen kopflosen oder kopflosen Browser zu definieren. Dann müssen wir die Instanz des Webbrowsers erstellen, die zum Navigieren in der URL erforderlich ist. Hier wird die asynchrone Funktion verwendet, um das Schlüsselwort await für den Web-Synchronizer zu verwenden.

//Puppeteer-Paket einbinden const puppeteer = require('puppeteer'); (async () => { //Headless Browser starten const browser = await puppeteer.launch({headless: true }); //Instanz des Browsers erstellen const page = await browser.newPage(); //Navigiere zur URL erwartet page.goto('https://www.amazon.in/'); })()

Der gesamte Test wird in einem kopflosen Browser durchgeführt. Wenn wir den Headful-Browser öffnen möchten, müssen wir das Objekt an die Startmethode als übergeben "{Headless: false}".

Überprüfen Sie die Existenz - Wir müssen die Methode anwenden page.waitForXpath Dadurch wird die Existenz des Xpath überprüft und die Referenz des Testobjekts zurückgegeben. Durch Testen der Rückgabereferenz können wir dem Testfall einen Überprüfungspunkt hinzufügen.

\tlet searchBox = waiting page.waitForXPath("//*[@id='twotabsearchtextbox']",{ sichtbar: true });
\tif (searchBox === null) //Überprüfung des Testobjekts
\T{
\t\tconsole.log('Amazon-Bildschirm wird nicht angezeigt');
\T}

Daten eingeben - Verwendung der tippe Methode dieser Objektreferenz können wir den Text eingeben.

warte auf searchBox.type("Testbuch");

Klicken Sie auf Element  - Ebenso mit dem klicken Sie auf Methode jeder Objektreferenz können wir Klickoperationen durchführen.

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

Nachricht in der Konsole drucken  - Mit der Methode console.logkönnen wir jede Nachricht in der Konsole als Ausgabe drucken.

console.log('Konsolenverzögerung wurde generiert');

Siehe die neue Registerkarte - Mit den Methoden page.target und browser.waitforTargetkönnen wir die Referenz über die neue Registerkarte überprüfen und in einer Variablen speichern.

\tconst pageTarget = page.target();
\tconst newTarget = waiting browser.waitForTarget(target => target.opener() === pageTarget);
\t//holt das neue Seitenobjekt:
\tconst page2 = waiting newTarget.page();

Erfassen Screenshot - Mit der Methode Seite. Bildschirmfotowurde ein Schnappschuss der jeweiligen Seite erstellt und gemäß dem als Argument angegebenen Dateinamen gespeichert.

warte auf page.screenshot ({ path: 'screenshot1.png' });

Seite und Browser schließen - Mit der Methode schließenkönnen wir sowohl die Webseite als auch den Browser schließen.

\tawait page.close(); \tawait browser.close();

Wartezeit - In bestimmten Fällen muss auf das Laden oder Beenden einer abhängigen Aufgabe gewartet werden. Wir müssen die Ausführung für eine vordefinierte Zeit anhalten. Um dies durchzuführen, können wir verwenden die page.waitForTimeout Methode, die die Ausführung basierend auf dem durch das Argument übergebenen Wert (in Millisekunden) anhalten kann.

warte auf page.waitForTimeout (2000);

Jetzt haben wir die grundlegenden technischen Schritte zur Automatisierung unseres Funktionsszenarios kennengelernt. Basierend auf dem Wissen können wir den folgenden Testfall von Puppeteer Automation durchgehen. Die detaillierte Übersicht der am häufigsten verwendeten Klassen und Methoden wird in den folgenden Beiträgen erläutert.

/**
 * @name Amazon-Suche
 */
const puppeteer = require('puppeteer');
const reportPath = 'C:\\\\LambdaGeeks\\\\puppteer_proj_sample\\\\output\\\\';
const Screenshot = 'screen1.png';
// Wird zum Exportieren der Datei in eine .docx-Datei verwendet
versuchen {
  (async () => {
    const browser = waiting puppeteer.launch({ headless: false });
    const pageNew = Warten auf browser.newPage()
    Warten Sie auf pageNew.setViewport({ width: 1280, height: 800 });
    Warten Sie auf pageNew.goto('https://www.amazon.in/');
\t//Suchkriterien eingeben
\tlet searchBox = waiting page.waitForXPath("//*[@id='twotabsearchtextbox']",{ sichtbar: true });
\tif (searchBox === null)
\T{
\t\tconsole.log('Amazon-Bildschirm wird nicht angezeigt');
\T}
\telse{\t\t
\t\tawait searchBox.type("Testing Book");
\t\tconsole.log('Suchkriterien wurden eingegeben');
\t} \t\t
\t//Auf die Suchschaltfläche geklickt
\tlet btnSearch = waiting pageNew.waitForXPath("//*/input[@id='nav-search-submit-button']",{ sichtbar: true });
\tif (btnSearch === null)
\T{
\t\tconsole.log('Suchschaltfläche wird nicht angezeigt');
\T}
\telse{
\t\tawait btnSearch.click();
\t\tconsole.log('Auf Suchschaltfläche geklickt');
\t}\t
\t//Klicken Sie auf ein bestimmtes Suchergebnis
\tlet myBook = waiting pageNew.waitForXPath("//*[contains(text(),'Selenium Testing Tools Cookbook Second Edition')]",{ sichtbar: true })
\tif (myBook === null)
\T{
\t\tconsole.log('Buch ist nicht verfügbar');
\T}
\telse{
\t\tawait myBook.click();
\t\tconsole.log('Klicken Sie auf ein bestimmtes Buch, um es zu bestellen');
\t} \t
\t// Identifizieren Sie, ob die neue Registerkarte geöffnet wurde
\tconst pageTarget = pageNew.target();
\tconst newTarget = waiting browser.waitForTarget(target => target.opener() === pageTarget);
\t//holt das neue Seitenobjekt:
\tconst page2 = waiting newTarget.pageNew();\t
\tawait page2.setViewport({ width: 1280, height: 800 });
\T
\t//Zum Warenkorb hinzufügen
\tlet addToCart = waiting page2.waitForXPath("//*/input[@id='add-to-cart-button']",{ sichtbar: true });
\tif (addToCart === null)
\T{
\t\tconsole.log('Die Schaltfläche „Zum Warenkorb hinzufügen“ ist nicht verfügbar.‘);
\T}
\telse{
\t\tconsole.log('Klicken Sie auf die Schaltfläche „Zum Warenkorb hinzufügen“);
\t\tawait addToCart.click();\t\t
\t} \t\t
\t//Überprüfen Sie den Prozess „Zum Warenkorb hinzufügen“\t
\tlet successMessage = waiting page2.waitForXPath("//*[contains(text(),'Added to Cart')]",{ sichtbar: true });
\tif (successMessage === null)
\T{
\t\tconsole.log('Artikel wurde nicht zum Warenkorb hinzugefügt');
\T}
\telse{
\t\tconsole.log('Artikel wurde erfolgreich zum Warenkorb hinzugefügt');\t\t
\t} \t\t
\t// Erfassen Sie die Warenkorbnummer
\tlet cartCount = waiting page2.waitForXPath("//*/span[@id='nav-cart-count']",{ sichtbar: true});
\tlet value = waiting page2.evaluate(el => el.textContent, cartCount)
\tconsole.log('Warenkorbanzahl: ' + Wert);
\tcartCount.focus();
\tawait page2.screenshot({ Pfad: Screenshot });
\T
\tawait pageNew.waitForTimeout(2000);
\tawait page2.close();
\tawait pageNew.close();
    Warten Sie auf browser.close();
  })()
} fangen (irrt) {
  console.error(err)
}

Schritt 5 # Puppenspieler-Automatisierungstestausführung:

Wir können die Ausführung mit dem Befehl initiieren Knoten sample_script.js über die Eingabeaufforderung. Während der Ausführung wird der Chromium-Browser geöffnet und führt automatisch die Funktionsschritte aus und speichert den Screenshot der letzten Seite. Der Screenshot und die Konsolenausgabe sehen wie folgt aus.

Puppenspieler-Automatisierungstests - Konsolenausgabe
Puppenspieler-Automatisierungstests - Konsolenausgabe
Puppenspieler-Automatisierungstests - Erfasster Bildschirm
Puppenspieler-Automatisierungstests - Erfasster Bildschirm

Fazit:

In diesem Tutorial zum Testen der Puppenspielautomatisierung haben wir die detaillierten Schritte zum Testen der Puppenspielautomatisierung kennengelernt. Im nächsten Puppenspiel-Tutorial lernen wir die detaillierte Übersicht der am häufigsten verwendeten Puppenspieler-Klassen und -Methoden kennen. bitte klicken hier um das Referenzportal für dieses Puppenspiel-Tutorial zu besuchen. 

Hinterlasse einen Kommentar