ProtracTor-testhandleiding: framework voor automatiseringstools

โšก Slimme samenvatting

ProtracTor is een end-to-end, op gedrag gebaseerd testframework, speciaal ontwikkeld voor AngularJS-applicaties. Het combineert... Selenium WebDriver met Jasmine, zodat testers echte browsers kunnen aansturen en Angular-specifieke elementen kunnen verifiรซren die standaard zijn. Selenium Locators kunnen het gebied niet bereiken.

  • ๐Ÿ”˜ Huidige status: ProtracTor bereikte in augustus 2023 het einde van zijn levensduur, dus de nieuwe suites moeten op de juiste plek komen. Cypress, Playwright of WebdriverIO.
  • โ˜‘๏ธ Vereisten: Installeer Node.js en Selenium WebDriver vรณรณr het uitvoeren van npm install -g protracdoel.
  • โœ… Twee bestanden: Voor elke testrun zijn conf.js voor de configuratie en spec.js voor de testlogica nodig.
  • ๐Ÿงช Angular-locators: by.model en by.binding bereiken ng-model- en ng-bind-elementen die Selenium alleen mist.
  • ๏ธ Chauffeursmanager: webdriver-manager update then webdriver-manager start serves Selenium op poort 4444.
  • ๐Ÿ“Š Rapportage: jasmijn-reporters JUnitXmlReporter schrijft junitresults.xml als auditbewijs.

ProtracTor-testhandleiding

Wat is ProtracTor-testen?

Protractor is een automatiserings- en end-to-end gedragsgestuurde testtool die een belangrijke rol speelt in de Testen van AngularJS-applicaties en werkt als een oplossingsintegrator die krachtige technologieรซn combineert zoals SeleniumJasmine, WebDriver, enz. Het doel van ProtracTor Testing is niet alleen bedoeld voor het testen van AngularJS-applicaties, maar ook voor het schrijven van geautomatiseerde scripts. regressietests Ook voor normale webapplicaties.

โš ๏ธ Melding over afschaffing: Protractor is verouderd en gearchiveerdDe ondersteuning eindigde in augustus 2023 en de Angular CLI liet zijn Pro-versie vallen.tracTor-builder na Angular 15. Kies Toneelschrijver, Cypress, WebdriverIO of TestCafe voor nieuwe end-to-end testenDe onderstaande stappenplan blijft van toepassing op oudere suites.

Waarom hebben we Pro nodig?tracTor-framework?

JavaScripting wordt in vrijwel alle webapplicaties gebruikt. Naarmate de applicaties groeien, JavaScript Ook de omvang en complexiteit nemen toe. In dat geval wordt het voor testers een lastige taak om de webapplicatie te testen op verschillende scenario's.

Soms is het moeilijk om de webelementen in AngularJS-applicaties vast te leggen met behulp van JUnit or Selenium Webstuurprogramma.

ProtracTor is een Node.js-programma dat is geschreven in JavaScript en wordt uitgevoerd met Node om de webelementen in AngularJS-toepassingen te identificeren. Daarnaast wordt WebDriver gebruikt om de browser te besturen met gebruikersacties.

Wat is een AngularJS-applicatie nu precies?

angularjs AngularJS 1.x-applicaties zijn webapplicaties die gebruikmaken van een uitgebreide HTML-syntaxis om webapplicatiecomponenten uit te drukken. Ze worden voornamelijk gebruikt voor dynamische webapplicaties. Deze applicaties gebruiken minder en flexibelere code in vergelijking met normale webapplicaties. Houd er rekening mee dat de ondersteuning voor AngularJS 1.x op 31 december 2021 is beรซindigd, waardoor dergelijke applicaties tegenwoordig als verouderd worden beschouwd.

Waarom kunnen we AngularJS-webelementen niet vinden met behulp van de normale zoekfunctie? Selenium WebDriver?

AngularJS-applicaties hebben een aantal extra HTML-attributen zoals ng-repeater, ng-controller, ng-model, enz., die niet standaard zijn opgenomen. Selenium plaatsbepalers. Selenium kan deze webelementen niet identificeren met behulp van Selenium code. Dus, Protractor op de top van Selenium kan deze attributen in webapplicaties beheren en controleren.

ProtracTor is een end-to-end testframework voor op AngularJS gebaseerde applicaties. Waar de meeste frameworks zich richten op het uitvoeren van tests, is Tor een framework voor end-to-end testen. eenheidstests voor AngularJS-applicaties, ProtracTor richt zich op het testen van de daadwerkelijke functionaliteit van een applicatie.

Voordat we beginnen met ProtracOm Tor te installeren, moeten we het volgende installeren:

  1. Selenium: je kunt de vinden Selenium installatiestappen in de Selenium Installatiehandleiding voor WebDriver.
  2. NPM (Node.js): We moeten Node.js installeren om Pro te kunnen installeren.tractor. Je vindt deze installatiestappen in de Handleiding voor het downloaden en installeren van Node.js.

Protractor Installatie

Stap 1) Open de opdrachtprompt en typ โ€œnpm install -g protracTorโ€ en druk op Enter.

Met bovenstaande opdracht worden de benodigde bestanden gedownload en Pro geรฏnstalleerd.tractor op het clientsysteem, zoals hieronder weergegeven.

Uitvoer van de opdrachtprompt na het uitvoeren van npm install -g protractor

Stap 2) Controleer de installatie en versie met behulp van "protractor-versie. ' Als dit lukt, wordt de versie weergegeven zoals in onderstaande schermafbeelding. Als dit niet het geval is, voert u stap 1 opnieuw uit.

protractor --version print de geรฏnstalleerde ProtracTor-versienummer

(Stappen 3 en 4 zijn optioneel, maar aanbevolen voor betere praktijk)

Stap 3) Update de WebDriver-manager. De WebDriver-manager wordt gebruikt om de tests voor de Angular-webapplicatie in een specifieke browser uit te voeren. Na ProtracAls Tor is geรฏnstalleerd, moet de WebDriver-manager worden bijgewerkt naar de nieuwste versie. Dit kan worden gedaan door de volgende opdracht in de opdrachtprompt uit te voeren.

webdriver-manager update

De driverbestanden worden gedownload zoals hieronder weergegeven.

webdriver-manager update downloadt de nieuwste binaire bestanden van de browserstuurprogramma's

Stap 4) Start de WebDriver-manager. Deze stap zorgt ervoor dat de WebDriver-manager op de achtergrond wordt uitgevoerd en luistert naar alle tests die via pro worden uitgevoerd.tracdoel.

Zodra een test is uitgevoerd, laadt de WebDriver deze automatisch in de betreffende browser. Start de manager met het onderstaande commando.

webdriver-manager start

De console meldt het luisteradres.

webdriver-manager start launching the Selenium zelfstandige server op de achtergrond

Als je nu naar het volgende gaat: URL (http://localhost:4444/wd/hub/static/resource/hub.htmlAls u dit in uw browser doet, ziet u de WebDriver-manager daadwerkelijk op de achtergrond draaien.

Selenium WebDriver-hubpagina beschikbaar op localhost poort 4444

Testen van een voorbeeld van een AngularJS-applicatie met Protractor

Met de coureurmanager actief, ProtracTor heeft twee bestanden nodig om te draaien, een spec file en configuratie bestand.

  1. ConfiguratiebestandDit bestand helpt professionalstractor naar de locatie waar de testbestanden zich bevinden (specs.js) en om te communiceren met Selenium server (Selenium Adres). Chrome is de standaardbrowser voor Protracdoel.
  2. Specificatiebestand: Dit bestand bevat de logica en locators voor interactie met de applicatie.

Stap 1) We moeten open gaan https://angularjs.org en voer de tekst "GURU99" in het tekstvak "Voer hier een naam in".

Tekstvak op de homepage van AngularJS waar de naam GURU99 wordt ingevoerd.

Stap 2) In deze stap,

  1. De naam โ€œ is ingevoerdGuru99 "
  2. In de uitvoertekst: "Hallo" Guru99โ€ณ is te zien.

AngularJS-pagina die de uitvoertekst "Hello GURU99" weergeeft.

Stap 3) Nu moeten we de tekst van de webpagina vastleggen nadat we de naam hebben ingevoerd en deze verifiรซren met de verwachte tekst.

Code:

We moeten het configuratiebestand voorbereiden (conf.js) en spec-bestand (spec.js) Zoals hierboven vermeld.

Logica van spec.js:

describe('Enter GURU99 Name', function() {
 it('should add a Name as GURU99', function() {
 browser.get('https://angularjs.org');
 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 Uitleg van spec.js:

  1. beschrijven('Voer de GURU99-naam in', functie() De beschrijvingssyntaxis is afkomstig van de Jasmine-frameworkHier definieert "describe" ('Enter GURU99 Name') doorgaans componenten van een applicatie, zoals een klasse of functie. In de codesuite genaamd "Enter GURU99" is het echter slechts een tekenreeks en geen code.
  2. it('moet een naam toevoegen als GURU99', function()
  3. browser.get('https://angularjs.org')Zoals in Selenium WebDriver browser.get opent een nieuwe browserinstantie met de genoemde gegevens. URL.
  4. element(door.model('uwnaam')).stuursleutels('GURU99') Hier vinden we het web-element met behulp van de modelnaam "yourName", wat de waarde is van "ng-model" op de webpagina. Bekijk de schermafbeelding hieronder.

Paginabron die de waarde van het ng-model-attribuut yourName weergeeft, zoals gebruikt door by.model

  1. var guru= element(by.xpath('html/body/div[2]/div[1]/div[2]/div[2]/div/h1')) Hier vinden we het webelement met XPath en de waarde ervan opslaan in een variabele โ€œgoeroeโ€.
  2. verwachten(goeroe.getText()).gelijk maken('Hallo GURU99!') Tenslotte verifiรซren we de tekst die we van de webpagina hebben gekregen (met behulp van gettext() ) met verwachte tekst .

Logica van conf.js:

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

Code Uitleg van conf.js

  1. seleniumAddress: 'http://localhost:4444/wd/hub'Het configuratiebestand vertelt Protracvoor de locatie van Selenium Adres om mee te praten Selenium Webstuurprogramma.
  2. specificaties: ['spec.js']Deze regel vertelt Protractor de locatie van testbestanden spec.js

uitvoering van de Code

Navigeer eerst naar de map waar de bestanden conf.js en spec.js zich bevinden en volg daarna de onderstaande stappen..

Stap 1) Open de opdrachtprompt.

Stap 2) Zorg ervoor Selenium WebDriver Manager is gestart en actief. Voer hiervoor het commando "webdriver-manager start" in en druk op Enter..

Opdrachtprompt ter bevestiging Selenium WebDriver-manager is operationeel.

(Als Selenium WebDriver is niet actief, we kunnen de test als Pro niet uitvoeren.tracTor kan de WebDriver niet vinden om de webapplicatie af te handelen.

Stap 3) Open een nieuwe opdrachtprompt en geef de opdracht as "protractor conf.jsโ€ om het configuratiebestand uit te voeren. De uitvoering wordt voltooid zoals hieronder weergegeven.

ProtracTor-console-uitvoer voor een geslaagde test begon met protractor conf.js

Uitleg:

  • Hier ProtracTor voert het configuratiebestand uit met daarin het opgegeven specificatiebestand.
  • We kunnen de zien Selenium server draait op โ€œhttp://localhost:4444/wd/hubโ€die we hebben gegeven in het conf.js-bestand.
  • Hier kunt u ook het resultaat zien, hoeveel er zijn doorgegeven en de mislukkingen, zoals in de bovenstaande schermafbeelding.

Een voldoende resultaat is nu geverifieerd. Bekijk vervolgens een onvoldoende resultaat.

Stap 1) Openen en wijzigen zou moeten resulteren in spec.js, zodat het eruitziet als โ€œ'Hello change GURU99โ€™, zoals hieronder.

Na wijziging in spec.js :

describe('Enter GURU99 Name', function() {
 it('should add a Name as GURU99', function() {
 browser.get('https://angularjs.org');
 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!');
  });
});

Stap 2) Sla het bestand spec.js op en herhaal de bovenstaande stappen van "Uitvoering van de Code" sectie

Voer nu de bovenstaande stappen uit.

Resultaat:

ProtracTor-console-uitvoer die de mislukte specificatie weergeeft, gemarkeerd met de letter F.

We kunnen het resultaat als mislukt zien, aangegeven met 'F' in de schermafbeelding met de reden als โ€œVerwacht 'Hallo GURU99!' gelijk aan 'Hallo verandering GURU99!'. Het laat ook zien hoeveel fouten er optreden tijdens het uitvoeren van de code.

Kunnen we hetzelfde bereiken met Selenium WebDriver?

Soms kunnen AngularJS-elementen worden gevonden met behulp van XPath- of CSS-selectors. Selenium WebDriver. Deze elementen worden echter dynamisch gegenereerd en opnieuw gekoppeld, dus ProtracTor was de veiligere optie voor AngularJS-suites.

Genereer rapporten met Jasmine Reporters

ProtracTor ondersteunt Jasmine-reporters. Deze sectie maakt gebruik van JUnitGebruik XmlReporter om automatisch testuitvoeringsrapporten in XML-formaat te genereren, door de onderstaande stappen te volgen.

Installatie van Jasmijn Reporter

Er zijn twee opties: lokaal of wereldwijd.

  1. Open de opdrachtprompt en voer de volgende opdracht uit om lokaal te installeren
npm install --save-dev jasmine-reporters@^2.0.0

Het bovenstaande commando installeert jasmine-reporters lokaal, in de map waarin het wordt uitgevoerd.

  1. Open de opdrachtprompt en voer de volgende opdracht uit voor een wereldwijde installatie
npm install โ€“g jasmine-reporters@^2.0.0

Hier zijn de verslaggevers lokaal gestationeerd..

Stap 1) Voer de opdracht uit.

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

vanaf de opdrachtprompt, zoals hieronder.

Jasmine-reporters lokaal installeren met npm in de projectmap.

Stap 2) Controleer de installatiemappen in de map. "Node_modules" zou beschikbaar moeten zijn als het succesvol is geรฏnstalleerd, zoals in onderstaande momentopname.

Een lijst met Node_modules-mappen bevestigt de installatie van jasmine-reporters.

Stap 3) Voeg de volgende gekleurde code toe aan een bestaand conf.js-bestand

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)
          );
     }
   };

Toelichting code:

In code genereren we het rapport โ€œJUnitXMLReporter' en geef het pad op waar het rapport moet worden opgeslagen.

Stap 4) Open de opdrachtprompt en voer de opdracht uit protractor conf.js.

Protractor run die de genereert JUnit XML-rapport na de conf.js-update

Stap 5) Wanneer u de bovenstaande code uitvoert, wordt junitresults.xml gegenereerd in het genoemde pad.

Het rapportbestand junitresults.xml is aangemaakt in het geconfigureerde uitvoerpad.

Stap 6) Open de XML en verifieer het resultaat. Het foutbericht wordt in het resultaatbestand weergegeven als ons Testgeval is mislukt. De testcase is mislukt omdat het verwachte resultaat van "spec.js" niet overeenkomt met het daadwerkelijke resultaat van een webpagina.

De inhoud van junitresults.xml toont het foutbericht voor de mislukte testcase.

Stap 7) Gebruik het bestand junitresult.xml voor bewijs- of resultaatbestanden.

ProtracTor versus moderne alternatieven voor testautomatisering

Sinds ProtracOmdat Tor geen updates meer ontvangt, moeten teams die nieuwe suites plannen, weten hoe het zich verhoudt tot de frameworks waarnaar Angular-projecten nu migreren. De onderstaande tabel vergelijkt ProtracTor met de drie alternatieven die het vaakst voorkomen in de onderstaande veelgestelde vragen.

Kader Status Taalondersteuning Browser-engines Hoekspecifieke locators
Protractor Verouderd, einde levenscyclus augustus 2023 Javascript, TypeScript Chrome, FirefoxIE via Selenium webdriver door.model, door.binding, door.repeater
Cypress Actief onderhouden Javascript, TypeScript Chrome, Firefox, Rand Geen; is afhankelijk van CSS of data-attributen.
Toneelschrijver Actief onderhouden Javascript, TypeScript, Python, Java, .NET Chroom, FirefoxWebKit Geen; is afhankelijk van CSS-, tekst- of rolselectoren.
WebdriverIO Actief onderhouden Javascript, TypeScript Chroom, Firefox, WebKit via WebDriver of DevTools Geen; is afhankelijk van CSS of data-attributen.

Teams met een bestaande profspelertracTor Suite werkt over het algemeen het snelst. WebdriverIO, aangezien het een commandostijl heeft en Selenium-gebaseerd chauffeursmanagement blijft dicht bij wat ProtracTor-testers weten dit al. Teams die helemaal opnieuw beginnen, of die de snelste testruns nodig hebben, kiezen vaker voor... Cypress Of toneelschrijver.

Veelgestelde vragen

Nee. ProtracTor heeft in augustus 2023 het einde van zijn levenscyclus bereikt en ontvangt geen updates of beveiligingspatches meer. Angular heeft zijn command line builder na versie 15 verwijderd, dus alle resterende code moet als verouderd worden beschouwd.

Angular heeft builders toegevoegd voor CypressNightwatch en WebdriverIO vanaf versie 12. Toneelschrijver TestCafe is ook populair, en Amadeus publiceert een professioneel tijdschrift.tracTor-naar-toneelschrijver-converter die het herschrijven grotendeels automatiseert.

by.model, by.binding, by.repeater, by.exactBinding en by.options lezen rechtstreeks gegevens van AngularJS-directives. Standaard Selenium Locators zoals by.css, by.id en by.xpath blijven beschikbaar in dezelfde specificatie.

AI-ondersteund zelfherstel vergelijkt een defecte locator met de live DOM en repareert deze automatisch, terwijl machine learning herhaalde fouten groepeert, zodat echte defecten worden gescheiden van timingruis tijdens automatisering testen.

Copilot en vergelijkbare agentische assistenten herschrijven describe-blokken, element()-aanroepen en expect-beweringen snel naar Playwright-locators, maar elke gegenereerde specificatie moet nog steeds handmatig worden gecontroleerd op wachttijden, beweringen en testcase dekking.

Vat dit bericht samen met: