Testowanie automatyzacji lalkarzy: samouczek 6

Puppeteer to framework oparty na bibliotece node js, który jest dostępny jako open-source. Może być używany do narzędzi do zgarniania sieci. Jest również używany w narzędziach do automatyzacji testów. W dzisiejszych czasach wykorzystanie Puppeteer gwałtownie wzrasta w zautomatyzowanej przestrzeni testowania oprogramowania. Do zrozumienia wymagana jest podstawowa znajomość linii poleceń, Javascriptu i HTML DOM samouczek lalkarza. Cały tutorial jest podzielony na poniższe artykuły. 

Samouczek lalkarza

Samouczek Tosca nr 1: Przegląd lalkarza

Tosca Poradnik # 2: Zmienne środowiskowe lalkarza

Tosca Poradnik # 3: Przeszukiwanie sieci lalkarza i automatyzacja testów lalkarza - przegląd

Tosca Poradnik # 4: Zainstaluj Puppeteer

Tosca Poradnik # 5: Przykładowy projekt lalkarza

Samouczek Tosca nr 6: Testowanie automatyzacji lalkarza

W tym samouczku „Puppeteer Automation Testing” wyjaśnimy od początku szczegółowe kroki dla Puppeteer Automation. Poniższe funkcje zostaną wyjaśnione, aby zrozumieć testowanie automatyzacji lalkarza od zera -

· Zainstaluj Puppeteer

· Uruchom aplikację internetową

· Zidentyfikuj właściwości obiektu w przeglądarce Chrome

· Kroki przesyłania formularza - wprowadź tekst, kliknij zdarzenie, weryfikacja

· Zrzut ekranu

· Wykonywanie skryptów dla Puppeteer Automation

Automatyzacja lalkarza

Testowanie jest wymagane, aby zapewnić jakość oprogramowania. Istnieje wiele poziomów testowania zdefiniowanych w procesach tworzenia oprogramowania. Aby przetestować funkcjonalność oprogramowania, można to zrobić ręcznie lub w zautomatyzowanym procesie. Główne cele automatycznego testowania oprogramowania to -

  • Szybki cykl wykonywania testów.
  • Unikaj ryzyka błędów ludzkich.
  • Skróć czas wykonywania testów.
  • Skróć czas cyklu wydania.
  • Więcej funkcjonalności bez kompromisów w kwestii jakości.
  • Wielokrotne wykonanie można wykonać równolegle.

 Puppeteer to oparta na javascript biblioteka Node, która zapewnia interfejs aplikacji wysokiego poziomu (API) do sterowania przeglądarką internetową Chrome za pośrednictwem protokołu Chrome DevTools. Większość ręcznych operacji wykonywanych w przeglądarce Chrome można zautomatyzować za pomocą Puppeteer. Tak więc Puppeteer jest dobrym wyborem do szybkich i łatwiejszych testów jednostkowych w aplikacjach internetowych. 

Podejście do testowania automatyzacji lalkarza:

Kroki związane z testowaniem automatyzacji Puppeteer są wyjaśnione poniżej - 

Krok 1 # Zidentyfikuj scenariusz testu funkcjonalnego:

Pokażemy krok po kroku podejście do wykonywania automatyzacji Puppeteer dla poniższego scenariusza - 

· Uruchom przeglądarkę internetową.

· Wywołaj aplikację Amazon Web.

  • Wyszukaj książkę „Testing Book”.
  • Dodaj książkę do koszyka z wyniku.
  • Otwórz koszyk i sprawdź, czy książka jest w nim dostępna.
  • Przechwyć ekran i zamknij przeglądarkę.

Krok 2 # Zainstaluj Puppeteer i utwórz przypadek testowy:

Utwórz pusty plik javascript jako „sample_script.js” w określonym folderze. Tutaj rozważymy folder główny jako SampleProject. Aby zainstalować Puppeteer, użyjemy polecenia - „npm install puppeteer”. Procedura instalacji zajmuje trochę czasu w zależności od szybkości sieci. Pobierze około 350 MB danych. Po instalacji folder node_modules, który zawiera różne komponenty puppeteer i plik package-lock.json, zostanie utworzony w przykładowym folderze głównym projektu Puppeteer.

Krok 3 # Przechwyć właściwości identyfikacyjne obiektu testowego:

Możemy przechwycić właściwości identyfikacyjne za pomocą narzędzia deweloperskiego przeglądarki internetowej Chrome. Analizując różne właściwości, takie jak id, name, XPath itp., Wybierzemy właściwą, której można użyć w skryptach do wykonania dowolnych operacji. W tym samouczku „Puppeteer Automation Testing” użyjemy XPath w skrypcie. Poniżej kroki, które należy wykonać, aby uzyskać XPATH lub inne właściwości,

1. Otwórz Narzędzia deweloperskie dostępne w „Menu -> Więcej narzędzi” i przejdź do zakładki Elementy.

2. Korzystając z narzędzia Finder (klikając na ikonę strzałki dostępną w lewym górnym rogu zakładki Elementy), podświetl z aplikacji obiekt testowy. Tutaj sprawdzimy pole wyszukiwania.

Puppeteer Automation Testing - Otwórz narzędzie Chrome Developer
Puppeteer Automation Testing - Otwórz narzędzie Chrome Developer

3. Przeanalizuj podświetlony kod źródłowy, aby zidentyfikować pożądane właściwości. Aby uzyskać właściwość XPATH obiektu testowego, kliknij prawym przyciskiem myszy podświetloną sekcję i kliknij „Kopiuj-> Kopiuj Xpath”, aby skopiować właściwość XPATH do schowka.

Testowanie automatyzacji lalkarza - skopiuj XPath
Testowanie automatyzacji lalkarza - skopiuj XPath

4. Teraz wklej ścieżkę Xpath w polu tekstowym wyszukiwarki i naciśnij klawisz Enter, aby sprawdzić, czy ścieżka Xpath jednoznacznie identyfikuje obiekt.

Testowanie automatyzacji lalkarza - sprawdź XPath
Testowanie automatyzacji lalkarza - sprawdź XPath

5. Podobnie musimy przechwycić właściwości identyfikacyjne również dla innego obiektu testowego.

Krok 4 # Kroki rozwoju automatyzacji lalkarza:

Aby ukończyć przypadek testowy, musimy wykonać określone operacje na stronach internetowych. Dla każdej operacji dostępne są różne metody. Metody, które są używane w naszym scenariuszu do „Testowania automatyzacji lalkarza”, są wyjaśnione tutaj.

Włącz aplikację - Po włączeniu lalkarza musimy uruchomić przeglądarkę za pomocą metody lalkarza - uruchom. Do tej metody można przekazać odwołanie do obiektu, aby zdefiniować przeglądarkę bezgłową lub z pełną treścią. Następnie musimy utworzyć instancję przeglądarki internetowej, która jest wymagana do nawigacji po adresie URL. W tym przypadku funkcja async jest używana do używania słowa kluczowego await do obsługi synchronizatora internetowego.

//Dołącz pakiet lalek const puppeteer = require('puppeteer'); (async() => { //uruchamianie przeglądarki bez nagłówka const browser = await puppeteer.launch({ headless: true }); //Utworzenie instancji przeglądarki const page = await browser.newPage(); //Przejdź do url await page.goto('https://www.amazon.in/'); })()

Całe testowanie zostanie przeprowadzone w przeglądarce bezgłowej. Jeśli chcemy otworzyć przeglądarkę headful, musimy przekazać obiekt do metody uruchamiania jako „{Headless: false}”.

Sprawdź istnienie - Musimy skorzystać z metody strona.waitForXpath co sprawdzi istnienie Xpath i zwróci odniesienie do obiektu testowego. Testując odwołanie zwrotne, możemy dodać punkt weryfikacji w przypadku testowym.

\tlet searchBox = czekaj na stronę.waitForXPath("//*[@id='twotabsearchtextbox']",{ widoczne: prawda });
\tif (searchBox === null) //Weryfikacja obiektu testowego
\T{
\t\tconsole.log('Ekran Amazon nie jest wyświetlany');
\T}

Wprowadzanie danych - Używając rodzaj metody odniesienia do obiektu, możemy wprowadzić tekst.

await searchBox.type("Książka testowa");

Kliknij Element  - Podobnie, używając kliknij metody dowolnego odniesienia do obiektu, możemy wykonać operacje kliknięcia.

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

Wydrukuj wiadomość w konsoli  - Stosując metodę konsola.log, możemy wydrukować dowolną wiadomość w konsoli jako wyjście.

console.log('Wygenerowano opóźnienie konsoli');

Zapoznaj się z nową kartą - Korzystanie z metod page.target i browser.waitforTarget, możemy sprawdzić i zapisać odniesienie do nowej karty w zmiennej.

\tconst stronaTarget = strona.target();
\tconst newTarget = czekaj na przeglądarkę.waitForTarget(target => target.opener() === pageTarget);
\t//pobierz nowy obiekt strony:
\tconst strona2 = czekaj na nowy cel.strona();

Zrzut ekranu - Stosując metodę strona. Zrzut ekranu, wykonano migawkę danej strony i zapisano ją zgodnie z nazwą pliku podaną jako argument.

await page.screenshot({ ścieżka: 'screenshot1.png' });

Zamknij stronę i przeglądarkę - Stosując metodę zamknięte, możemy zamknąć zarówno stronę internetową, jak i przeglądarkę.

\tawait page.close();
\tawait przeglądarka.zamknij();

Czas oczekiwania - W niektórych przypadkach wymagane jest oczekiwanie na załadowanie strony lub zakończenie dowolnego zadania zależnego; musimy wstrzymać wykonanie na określony czas. Aby to zrobić, możemy użyć strona.waitForTimeout metoda, która może wstrzymać wykonanie na podstawie wartości (w mili-sekundach) przekazanej przez argument.

czekaj na page.waitForTimeout(2000);

Teraz dowiedzieliśmy się o podstawowych krokach technicznych, aby zautomatyzować nasz scenariusz funkcjonalny. Bazując na tej wiedzy, możemy przejść przez poniższy przypadek testowy Automatyzacja lalkarzy. Szczegółowy przegląd najczęściej używanych klas i metod zostanie wyjaśniony w kolejnych postach.

/**
 * @name Wyszukiwanie w Amazonie
 */
const lalkarz = wymagaj('lalkarz');
const reportPath = 'C:\\\\LambdaGeeks\\\\puppteer_proj_sample\\\\output\\\\';
const zrzut ekranu = 'screen1.png';
// Służy do eksportowania pliku do pliku .docx
próbować {
  (asynchroniczne () => {
    const przeglądarka = czekaj na puppeteer.launch({headless: false });
    const pageNew = czekaj na przeglądarkę.newPage()
    czekaj na stronęNew.setViewport({szerokość: 1280, wysokość: 800 });
    czekaj na stronęNowe.goto('https://www.amazon.in/');
\t//Wprowadź kryteria wyszukiwania
\tlet searchBox = czekaj na stronę.waitForXPath("//*[@id='twotabsearchtextbox']",{ widoczne: prawda });
\tif (searchBox === null)
\T{
\t\tconsole.log('Ekran Amazon nie jest wyświetlany');
\T}
\telse{\t\t
\t\tawait searchBox.type("Książka testowa");
\t\tconsole.log('Wprowadzono kryteria wyszukiwania');
\t} \t\t
\t//Kliknięto przycisk wyszukiwania
\tlet btnSearch = oczekuj pageNew.waitForXPath("//*/input[@id='przycisk-nav-search-submit']",{ widoczne: prawda });
\tif (btnSearch === null)
\T{
\t\tconsole.log('Przycisk Szukaj nie jest wyświetlany');
\T}
\telse{
\t\tawait btnSearch.click();
\t\tconsole.log('Kliknięto przycisk wyszukiwania');
\t}\t
\t//Kliknij konkretny wynik wyszukiwania
\tlet myBook = oczekuj pageNew.waitForXPath("//*[contains(text(),'Książka kucharska z narzędziami do testowania Selenium, wydanie drugie')]",{ widoczne: true })
\tif (myBook === null)
\T{
\t\tconsole.log('Książka nie jest dostępna');
\T}
\telse{
\t\tawait myBook.click();
\t\tconsole.log('Kliknij konkretną książkę, aby zamówić');
\t} \t
\t// Sprawdź, czy nowa karta została otwarta
\tconst stronaTarget = stronaNowy.target();
\tconst newTarget = czekaj na przeglądarkę.waitForTarget(target => target.opener() === pageTarget);
\t//pobierz nowy obiekt strony:
\tconst page2 = czekaj na nowy cel.pageNew();\t
\tawait page2.setViewport({szerokość: 1280, wysokość: 800 });
\T
\t//Dodaj do koszyka
\tlet addToCart = czekaj na stronę2.waitForXPath("//*/input[@id='przycisk-dodaj-do-koszyka']",{ widoczne: prawda });
\tif (addToCart === null)
\T{
\t\tconsole.log('Przycisk Dodaj do koszyka jest niedostępny');
\T}
\telse{
\t\tconsole.log('Kliknij przycisk Dodaj do koszyka');
\t\tawait addToCart.click();\t\t
\t} \t\t
\t//Sprawdź proces dodawania do koszyka\t
\tlet SuccessMessage = czekaj na stronę2.waitForXPath("//*[contains(text(),'Dodano do koszyka')]",{ widoczne: prawda });
\tif (wiadomość sukcesu === null)
\T{
\t\tconsole.log('Produkt nie został dodany do koszyka');
\T}
\telse{
\t\tconsole.log('Pomyślnie dodano przedmiot do koszyka');\t\t
\t} \t\t
\t// Liczba przechwyceń koszyka
\tlet cartCount = czekaj na stronę2.waitForXPath("//*/span[@id='liczba-koszyka nawigacyjnego']",{ widoczne: prawda});
\tlet wartość = oczekiwanie na stronę2.evaluate(el => el.textContent, liczba koszyków)
\tconsole.log('Liczba koszyków: ' + wartość);
\tcartCount.focus();
\tawait page2.screenshot({ścieżka: zrzut ekranu });
\T
\tawait pageNew.waitForTimeout(2000);
\tawait strona2.zamknij();
\tawait pageNowy.close();
    czekaj na przeglądarkę.close();
  })()
} złapać (błąd) {
  konsola.error(err)
}

Krok 5 # Wykonanie testu automatyzacji lalkarza:

Wykonanie możemy zainicjować poleceniem węzeł sample_script.js za pomocą wiersza polecenia. Podczas wykonywania przeglądarka Chromium zostanie otwarta i automatycznie wykona czynności funkcjonalne oraz zapisze zrzut ekranu końcowej strony. Zrzut ekranu i wyjście konsoli będą wyglądać jak poniżej.

Testowanie automatyzacji lalkarza - wyjście konsoli
Testowanie automatyzacji lalkarza - wyjście konsoli
Testowanie automatyzacji lalkarza - przechwycony ekran
Testowanie automatyzacji lalkarza - przechwycony ekran

Wnioski:

W tym samouczku dotyczącym testowania automatyzacji lalkarza dowiedzieliśmy się o szczegółowych krokach w testowaniu automatyzacji lalkarza. W następnym tutorialu Puppeteer dowiemy się o szczegółowym przeglądzie najczęściej używanych klas i metod lalkarskich. Proszę kliknąć tutaj aby odwiedzić portal referencyjny dla tego samouczka lalkarza. 

Zostaw komentarz