ProtracSamouczek testowania Tor: Framework narzędzi automatyzacji

⚡ Inteligentne podsumowanie

Protractor to kompleksowe środowisko testowe oparte na zachowaniu, stworzone dla aplikacji AngularJS, łączące Selenium WebDriver z Jasmine, dzięki czemu testerzy mogą obsługiwać prawdziwe przeglądarki i weryfikować elementy specyficzne dla Angulara, które są standardowe Selenium lokalizatory nie mogą dosięgnąć.

  • 🔘 Aktualny stan: ProtracTor osiągnął koniec cyklu życia w sierpniu 2023 r., więc nowe apartamenty powinny być Cypress, Playwright lub WebdriverIO.
  • ️ Wymagania wstępne: Zainstaluj Node.js i Selenium WebDriver przed uruchomieniem npm install -g protracsłup.
  • ✅ Dwa pliki: Do każdego uruchomienia potrzebny jest plik conf.js do konfiguracji i spec.js do logiki testu.
  • 🧪 Lokalizatory kątowe: by.model i by.binding docierają do elementów ng-model i ng-bind, które Selenium tylko tęskni.
  • 🛠️. Menedżer kierowców: aktualizacja webdriver-manager, a następnie uruchomienie webdriver-manager Selenium na porcie 4444.
  • 📊 Raportowanie: reporterzy jaśminowi JUnitXmlReporter zapisuje plik junitresults.xml jako dowód audytu.

ProtracSamouczek testowania Tor

Co to jest ProtracTestowanie Tora?

ProtracTor to narzędzie do automatyzacji i kompleksowego testowania opartego na zachowaniu, które odgrywa ważną rolę w Testy aplikacji AngularJS i pracuje jako integrator rozwiązań, łącząc zaawansowane technologie, takie jak Selenium, Jasmine, WebDriver itp. Celem ProtracTestowanie Tor nie służy tylko do testowania aplikacji AngularJS, ale także do pisania zautomatyzowanych testy regresyjne również dla normalnych aplikacji internetowych.

⚠️ Informacja o wycofaniu: Protractor jest przestarzałe i zarchiwizowaneWsparcie zakończyło się w sierpniu 2023 r., a Angular CLI porzucił wersję Protractor builder po Angular 15. Wybierz Dramaturg, Cypress, WebdriverIO lub TestCafe dla nowych testy end-to-endPoniższy opis dotyczy również starszych wersji pakietów.

Dlaczego potrzebujemy Protractor Framework?

JavaSkrypt jest używany w niemal wszystkich aplikacjach internetowych. Wraz z rozwojem aplikacji, JAVASCRIPT Zwiększa się również rozmiar i złożoność. W takim przypadku testowanie aplikacji webowej w różnych scenariuszach staje się trudnym zadaniem dla testerów.

Czasami trudno jest przechwycić elementy internetowe w aplikacjach AngularJS za pomocą JUnit or Selenium Sterownik sieciowy.

ProtracTor to program Node.js napisany w JavaSkrypt działa z Node w celu identyfikacji elementów internetowych w aplikacjach AngularJS, a także używa WebDriver do sterowania przeglądarką za pomocą działań użytkownika.

Czym właściwie jest aplikacja AngularJS?

angularjs Aplikacje to aplikacje internetowe, które wykorzystują rozszerzoną składnię HTML do wyrażania komponentów aplikacji internetowych. Jest ona używana głównie w dynamicznych aplikacjach internetowych. Aplikacje te wykorzystują mniej elastycznego kodu w porównaniu ze standardowymi aplikacjami internetowymi. Należy pamiętać, że AngularJS 1.x zakończył długoterminowe wsparcie techniczne 31 grudnia 2021 r., więc takie aplikacje są już przestarzałe.

Dlaczego nie możemy znaleźć elementów internetowych AngularJS za pomocą polecenia Normal Selenium Sterownik sieciowy?

Aplikacje AngularJS mają pewne dodatkowe atrybuty HTML, takie jak ng-repeater, ng-controller, ng-model itp., które nie są uwzględnione w Selenium lokalizatory. Selenium nie jest w stanie zidentyfikować tych elementów sieciowych za pomocą Selenium kod. Więc, Protractor na szczycie Selenium może obsługiwać i kontrolować te atrybuty w aplikacjach internetowych.

ProtracTor to kompleksowe środowisko testowe dla aplikacji opartych na AngularJS. Podczas gdy większość frameworków koncentruje się na przeprowadzaniu testów, testy jednostkowe dla aplikacji AngularJS, ProtracTor koncentruje się na testowaniu faktycznej funkcjonalności aplikacji.

Zanim zaczniemy Protractor, musimy zainstalować następujące elementy:

  1. Selenium: możesz znaleźć Selenium kroki instalacji w Selenium Instrukcja instalacji WebDriver.
  2. NPM (Node.js): musimy zainstalować Node.js, aby zainstalować Protractor. Instrukcje instalacji znajdziesz w Przewodnik pobierania i instalacji Node.js.

ProtracInstalacja Tora

Krok 1) Otwórz wiersz poleceń i wpisz „npm install -g protracsłup" i naciśnij Enter.

Powyższe polecenie pobierze niezbędne pliki i zainstaluje wersję Protractor na systemie klienta, jak pokazano poniżej.

Dane wyjściowe wiersza poleceń po uruchomieniu npm install -g protracTor

Krok 2) Sprawdź instalację i wersję za pomocą "zawodowiectractor – wersja". Jeśli się powiedzie, wyświetli wersję jak na poniższym zrzucie ekranu. Jeśli nie, wykonaj ponownie krok 1.

dlatractor --version drukuje zainstalowany Protracnumer wersji Tora

(Kroki 3 i 4 są opcjonalne, ale zalecane dla lepszej praktyki)

Krok 3) Zaktualizuj menedżera WebDriver. Menedżer WebDriver służy do uruchamiania testów w aplikacji internetowej Angular w określonej przeglądarce. Po wersji ProtracPo zainstalowaniu Tora należy zaktualizować menedżera WebDriver do najnowszej wersji. Można to zrobić, uruchamiając następujące polecenie w wierszu poleceń.

webdriver-manager update

Pliki binarne sterownika należy pobrać w sposób pokazany poniżej.

aktualizacja webdriver-manager pobieranie najnowszych plików binarnych sterowników przeglądarki

Krok 4) Uruchom menedżera WebDriver. Ten krok uruchomi menedżera WebDriver w tle i będzie nasłuchiwał testów uruchamianych przez program.tracsłup.

Po uruchomieniu testu WebDriver automatycznie załaduje go w odpowiedniej przeglądarce. Uruchom menedżera za pomocą poniższego polecenia.

webdriver-manager start

Konsola raportuje adres nasłuchiwania.

webdriver-manager rozpoczyna uruchamianie Selenium samodzielny serwer w tle

Teraz, jeśli przejdziesz do następującego URL (http://localhost:4444/wd/hub/static/resource/hub.html) w przeglądarce, zobaczysz menedżera WebDriver działającego w tle.

Selenium Strona główna WebDriver obsługiwana na porcie lokalnym 4444

Przykładowe testowanie aplikacji AngularJS przy użyciu ProtracTor

Po uruchomieniu menedżera sterowników ProtracDo uruchomienia Tora potrzebne są dwa pliki: specyfikacja pliku i konfiguracja plik.

  1. plik konfiguracyjny:Ten plik pomaga profesjonalistomtractor do miejsca, w którym znajdują się pliki testowe (specs.js) i do komunikacji z Selenium serwer (Selenium Adres). Chrome jest domyślną przeglądarką dla wersji Protracsłup.
  2. Plik specyfikacji: Ten plik zawiera logikę i lokalizatory umożliwiające interakcję z aplikacją.

Krok 1) Musimy otworzyć https://angular.dev/ i wpisz tekst „GURU99” w polu tekstowym „Wpisz tutaj nazwę”.

Pole tekstowe strony głównej AngularJS, w którym wpisano nazwę GURU99

Krok 2) W tym etapie,

  1. Wprowadzono nazwę „Guru99 "
  2. W tekście wyjściowym „Witaj” GuruWidziano 99 cali.

Strona AngularJS renderująca tekst wyjściowy Hello GURU99

Krok 3) Teraz musimy przechwycić tekst ze strony internetowej po wpisaniu nazwy i zweryfikować go z oczekiwanym tekstem.

Code:

Musimy przygotować plik konfiguracyjny (konf.js) i plik specyfikacji (spec.js) jak wspomniano powyżej.

Logika spec.js:

describe('Enter GURU99 Name', function() {
 it('should add a Name as GURU99', function() {
 browser.get('https://angular.dev/');
 element(by.model('yourName')).sendKeys('GURU99');
  var guru= element(by.xpath('html/body/div[2]/div[1]/div[2]/div[2]/div/h1'));
expect(guru.getText()).toEqual('Hello GURU99!');
  });
});

Code Wyjaśnienie spec.js:

  1. opisać('Wprowadź nazwę GURU99', function()Składnia opisu pochodzi z Struktura JasmineW tym przypadku polecenie „describe” („Wprowadź nazwę GURU99”) zazwyczaj definiuje komponenty aplikacji, którymi mogą być klasa, funkcja itp. W pakiecie kodu o nazwie „Wprowadź nazwę GURU99” jest to po prostu ciąg znaków, a nie kod.
  2. it(„należy dodać nazwę jako GURU99”, funkcja ()
  3. przeglądarka.get(‘https://angular.dev/’)As like in Selenium WebDriver browser.get otworzy nową instancję przeglądarki z wymienionym URL.
  4. element(by.model('twoje imię')).wyślij klucze('GURU99') Tutaj znajdujemy element sieciowy, używając nazwy modelu jako „twojaNazwa”, która jest wartością „model ng„na stronie internetowej. Sprawdź poniższy zrzut ekranu-

Źródło strony pokazujące wartość atrybutu ng-model yourName używaną przez by.model

  1. var guru= element(by.xpath('html/body/div[2]/div[1]/div[2]/div[2]/div/h1')) Tutaj znajdujemy element sieciowy za pomocą XPath i zapisz jego wartość w zmiennej „guru”.
  2. oczekiwać(guru.getText()).doRówne(„Witaj GURU99!”) Na koniec weryfikujemy tekst, który otrzymaliśmy ze strony internetowej (za pomocą gettext() ) z oczekiwanym tekstem.

Logika conf.js:

exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['spec.js']
};

Code Wyjaśnienie conf.js

  1. seleniumAddress: 'http://localhost:4444/wd/hub'Plik konfiguracyjny informuje Protracdo lokalizacji Selenium Adres, z którym można porozmawiać Selenium Sterownik sieciowy.
  2. specyfikacje: ['spec.js'] Ta linia informuje Protractor lokalizacja plików testowych spec.js

Wykonanie Code

Najpierw przejdź do folderu, w którym znajdują się pliki conf.js i spec.js, a następnie wykonaj poniższe kroki.

Krok 1) Otwórz wiersz polecenia.

Krok 2) Upewnij się, Selenium Menedżer WebDriver jest uruchomiony i działa. W tym celu wpisz polecenie „webdriver-manager start” i naciśnij Enter..

Wiersz poleceń potwierdzający Selenium Menedżer WebDriver jest uruchomiony i działa

(Gdyby Selenium WebDriver nie jest uruchomiony i nie możemy kontynuować testu jako ProtracTor nie może znaleźć sterownika WebDriver do obsługi aplikacji internetowej)

Krok 3) Otwórz nowy wiersz poleceń i wydaj polecenie as "zawodowiectrac„tor conf.js” Aby uruchomić plik konfiguracyjny. Uruchomienie kończy się w sposób pokazany poniżej.

Protracwyjście konsoli Tor dla specyfikacji przechodzącej rozpoczęte od wersji protractor conf.js

Wyjaśnienie:

  • Tutaj Protractor uruchomi plik konfiguracyjny zawierający podany plik specyfikacji.
  • Widzimy Selenium serwer działa z prędkością „http://localhost:4444/wd/hub”, który podaliśmy w pliku conf.js.
  • Tutaj można również zobaczyć wynik liczby zaliczonych i niepowodzeń, jak na powyższym zrzucie ekranu.

Wynik pozytywny został zweryfikowany. Teraz przyjrzyjmy się wynikowi negatywnemu.

Krok 1) Oczekuje się, że otwarcie i zmiana spowodują, że spec.js będzie wyglądał tak: „Hello change GURU99” jak poniżej.

Po zmianie w spec.js :

describe('Enter GURU99 Name', function() {
 it('should add a Name as GURU99', function() {
 browser.get('https://angular.dev/');
 element(by.model('yourName')).sendKeys('GURU99');
  var guru= element(by.xpath('html/body/div[2]/div[1]/div[2]/div[2]/div/h1'));
expect(guru.getText()).toEqual('Hello change GURU99!');
  });
});

Krok 2) Zapisz plik spec.js i powtórz powyższe kroki „Wykonywanie Code" Sekcja

Teraz wykonaj powyższe kroki.

Wynik:

ProtracWyjście konsoli Tor pokazujące nieprawidłową specyfikację oznaczoną literą F

Na zrzucie ekranu widzimy, że wynik nie powiódł się, co jest oznaczone literą „F” i powodem jest: „Oczekiwano „Witajcie GURU99!” równa się „Witaj, zmień GURU99!”. Pokazuje również liczbę błędów napotkanych podczas wykonywania kodu.

Czy możemy osiągnąć to samo z Selenium Sterownik sieciowy?

Czasami elementy AngularJS można zlokalizować za pomocą selektorów XPath lub CSS Selenium WebDriver. Jednak te elementy są generowane i odbudowywane dynamicznie, więc Protractor był bezpieczniejszą opcją dla pakietów AngularJS.

Generuj raporty za pomocą Jasmine Reporters

ProtracTor wspiera reporterów Jasmine. Ta sekcja używa JUnitXmlReporter umożliwia automatyczne generowanie raportów wykonania testów w formacie XML, postępując zgodnie z poniższymi krokami.

Instalacja Jasmine Reporter

Istnieją dwie opcje: lokalna i globalna

  1. Otwórz wiersz poleceń i wykonaj następujące polecenie, aby zainstalować lokalnie
npm install --save-dev jasmine-reporters@^2.0.0

Powyższe polecenie instaluje jasmine-reporters lokalnie, w katalogu, w którym jest uruchamiany.

  1. Otwórz wiersz poleceń i wykonaj następujące polecenie w celu globalnej instalacji
npm install –g jasmine-reporters@^2.0.0

Tutaj reporterzy są zainstalowani lokalnie.

Krok 1) Wykonaj polecenie.

npm install --save-dev jasmine-reporters@^2.0.0

z wiersza poleceń, jak poniżej.

Instalowanie jasmine-reporters lokalnie za pomocą npm w folderze projektu

Krok 2) Sprawdź foldery instalacyjne w katalogu. „Moduły_węzła” powinny być dostępne, jeśli zostaną pomyślnie zainstalowane, jak na poniższej migawce.

Lista folderów Node_modules potwierdzająca instalację jasmine-reporters

Krok 3) Dodaj następujący kolorowy kod do istniejącego pliku conf.js

exports.config = {
      seleniumAddress: 'http://localhost:4444/wd/hub',
      capabilities: {
          'browserName': 'firefox'
      },
      specs: ['spec.js'],
     framework: 'jasmine2' ,
      onPrepare: function() {
          var jasmineReporters = require('C:/Users/RE041943/Desktop/guru/node_modules/jasmine-reporters');
          jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter(null, true, true)
          );
     }
   };

Wyjaśnienie kodu:

W kodzie generujemy raport „JUnitReporter Xml” i podając ścieżkę, w której ma być przechowywany raport.

Krok 4) Otwórz wiersz poleceń i wykonaj polecenie dlatractor conf.js.

Protracuruchomienie tor, które generuje JUnit Raport XML po aktualizacji conf.js

Krok 5) Po wykonaniu powyższego kodu w podanej ścieżce zostanie wygenerowany plik junitresults.xml.

Plik raportu junitresults.xml utworzony w skonfigurowanej ścieżce wyjściowej

Krok 6) Otwórz plik XML i sprawdź wynik. Komunikat o błędzie jest wyświetlany w pliku wynikowym jako nasz Przypadek testowy Test zakończył się niepowodzeniem. Przypadek testowy zakończył się niepowodzeniem, ponieważ oczekiwany wynik ze „spec.js” nie zgadza się z rzeczywistym wynikiem ze strony internetowej.

Zawartość pliku junitresults.xml zawierająca komunikat o błędzie dla nieudanego przypadku testowego

Krok 7) Użyj pliku junitresult.xml w celu uzyskania dowodów lub plików z wynikami.

ProtracTor kontra alternatywy dla nowoczesnych automatyzacji testów

Od ProtracTor nie otrzymuje już aktualizacji, dlatego zespoły planujące nowe pakiety muszą wiedzieć, jak wypada on na tle frameworków, do których migrują obecnie projekty Angular. Poniższa tabela porównuje wersję Pro.tractor z trzema alternatywami, które najczęściej pojawiają się w poniższych FAQ.

Status wsparcie językowe Silniki przeglądarek Lokalizatory specyficzne dla Angulara
ProtracTor Wycofane, koniec wsparcia w sierpniu 2023 r. Javascenariusz, TypeScript Chrom, Firefox, IE przez Selenium Sterownik sieciowy według.modelu, według.wiązania, według.repeater
Cypress Aktywnie utrzymywane Javascenariusz, TypeScript Chrom, Firefox, Krawędź Brak; opiera się na CSS lub atrybutach danych
Dramaturg Aktywnie utrzymywane Javascenariusz, TypeScript, Python, Java, .INTERNET Chrom, Firefox, WebKit Brak; opiera się na CSS, tekście lub selektorach ról
Sterownik sieciowyIO Aktywnie utrzymywane Javascenariusz, TypeScript Chrom, Firefox, WebKit poprzez WebDriver lub DevTools Brak; opiera się na CSS lub atrybutach danych

Zespoły z istniejącym Protracpakiet Tor Suite zazwyczaj porusza się najszybciej Sterownik sieciowyIO, ponieważ jego styl dowodzenia i Seleniumzarządzanie sterownikami oparte na technologii Pro pozostaje zbliżone do tego, co oferuje ProtracTesterzy Tor już wiedzą. Zespoły, które zaczynają od nowa lub potrzebują najszybszych przebiegów testów, częściej wybierają Cypress lub dramatopisarza.

FAQ

Nie. ProtracTor zakończył wsparcie techniczne w sierpniu 2023 roku i nie otrzymuje żadnych aktualizacji ani poprawek bezpieczeństwa. Angular usunął swój kreator wiersza poleceń po wersji 15, więc każdy pozostały pakiet należy traktować jako przestarzały kod.

Angular dodał konstruktorów dla Cypress, Nightwatch i WebdriverIO od wersji 12. Dramaturg i TestCafe są również popularne, a Amadeus publikuje wersję protracKonwerter Tor-To-Playwright, który automatyzuje większość przepisywania.

by.model, by.binding, by.repeater, by.exactBinding i by.options odczytują dane z dyrektywy AngularJS bezpośrednio. Standardowo Selenium lokalizatory takie jak by.css, by.id i by.xpath pozostają dostępne w tej samej specyfikacji.

Samonaprawianie wspomagane przez sztuczną inteligencję porównuje uszkodzony lokalizator z żywym modelem DOM i automatycznie go naprawia, podczas gdy uczenie maszynowe grupuje powtarzające się awarie, dzięki czemu rzeczywiste wady są oddzielane od szumu czasowego podczas testowanie automatyzacji.

Copilot i podobni asystenci agentyczni szybko przepisują bloki describe, wywołania element() i asercje expect do lokalizatorów Playwright, jednak każda wygenerowana specyfikacja nadal wymaga ludzkiej kontroli waitów, asercji i walizka testowa pokrycie.

Podsumuj ten post następująco: