Selenium Webdriver-architectuur: de meeste beginners weten het niet

We gaan beginnen Selenium-zelfstudie Zwart boek in uitputtende en andere benadering, In dit eerste deel van de Selenium-tutorial zullen we besprekenSelenium Webdriver-architectuur, wat is Selenium Webdriver, Overzicht Selenium Webdriver, Beknopte geschiedenis van Selenium, Voordelen van Selenium, beperkingen van Selenium, Seleniumcomponenten en enkele veelgestelde vragen.

Wat is Selenium Webdriver

Selenium is een open source technologie of framework waarmee we webgebaseerde applicaties kunnen automatiseren. Selenium ondersteunt testen van meerdere browsers, meerdere talen zoals Java, Ruby, Perl en Python worden ook ondersteund. Het ondersteunt verschillende platforms zoals Windows, Linux, macOS etc. als onderdeel van het platform.

Korte geschiedenis over selenium:

Selenium werd aanvankelijk ontwikkeld uit een interne tool door Jason Huggins in 2004 bij ThoughtWorks.

Later in het jaar 2007 trad Huggins toe tot de organisatie Google, en met anderen zoals Jennifer Bevan ging hij verder met het ontwerp en de ontwikkeling van een van de eerste varianten van Selenium, genaamd Selenium RC. In dezelfde periode ontwikkelde een andere persoon, genaamd Simon Stewart van ThoughtWorks, geavanceerde automatiseringstools voor webbrowsers als WebDriver. 

In 2008 bedacht een persoon genaamd Philippe Hanrigou van ThoughtWorks concepten voor automatisering op afstand die bekend staan ​​als "Selenium Grid".

In 2009 werd op de Google Test Automation Conference besloten om de twee projecten samen te voegen en de naam te krijgen als Selenium WebDriver of Selenium 2.0.

Voordelen van Selenium Webdriver:

A. Open source:

Selenium is een open source-technologie / framework, daarom is er enorme community-ondersteuning beschikbaar waar de ontwikkelings- en verbeteringsmogelijkheden snel en uitgebreid zijn, ook als open source kunt u elke specifieke functie die u nodig heeft als onderdeel van uw werk implementeren en bijdragen aan de Open source gemeenschap. 

B. multi-programmeertaal ondersteund:

Selenium wordt ondersteund door veelgebruikte talen; het komt met verschillende programmeertaalbindingen, zodat u uw gunstige taal kunt kiezen om met selenium te werken volgens uw behoefte en expertise.

Selenium biedt ondersteuning voor de onderstaande programmeertalen: 

  • Java 
  • C#
  • Perl
  • python
  • Ruby  
  • Javascript

C. platformonafhankelijk:

Selenium is platformonafhankelijk, dus u kunt uw webapplicaties automatiseren via elk platform en elk besturingssysteem, dwz Windows, Linux, macOS enz.

D. Cross Browser Testing mogelijkheid

Selenium ondersteunt cross-browser testmogelijkheden voor uw webapplicaties; u kunt uw testsuite die met Selenium is geschreven in meerdere browsers uitvoeren, zoals Firefox, Chrome, IE, Safari enz.

E. Cross Device Testing mogelijkheid

Selenium Test Automation wordt gebruikt voor het automatiseren van het testen van mobiele webapplicaties op verschillende apparaten zoals Android, IOS. 

F. Externe of cloud uitvoering:

Selenium GRID biedt u de mogelijkheid om het automatiseringstestscript van uw webapplicatie in de cloud uit te voeren en te besturen door één systeem als masterknooppunt en een ander systeem als slaafknooppunt te maken, slaafknooppunten verbinden met één masterknooppunt en masternode bewaakt de slaaf knooppunten, dus uw tests bevinden zich in verschillende slaafknooppunten met het verschillende besturingssysteem en verschillende browsers zoals Chrome, Firefox, Internet Explorer enz.

G. parallel testen vermogen:

Met Selenium kunt u geautomatiseerde parallelle testmogelijkheden bereiken, dwz u kunt uw testscript of automatiseringstestcases parallel in dezelfde of dezelfde browser en een ander of hetzelfde besturingssysteem uitvoeren. Deze functie helpt u om een ​​kortere uitvoeringstijd te behalen voor de hele Automation Test-suite die u heeft, en u kunt ook de haalbaarheid en compatibiliteit van uw webtoepassing met meerdere besturingssystemen en meerdere browsers parallel testen.   

H. Compatibiliteit met meerdere Framework en tools en technologie van derden

Selenium-framework kan eenvoudig worden geïntegreerd met meerdere verschillende technologieën en frameworks van derden, zoals verschillende Unit Test-frameworks, dat wil zeggen: TestNg, JUnit, MbUnit, Nunit etc. etc., verschillende build-tools zoals Ant, Maven, Gradle etc., continue integratietools, dwz Jenkins, verschillende testbeheertools zoals Jira, testlink etc., verschillende rapportagetools zoals Allure, Extent Rapport enz.

I. Headless Browser uitvoering: 

Selenium Webdriver ondersteunt headless browserdriver voor geautomatiseerde uitvoering van testcases, waarbij al uw automatiseringstestcases in headless browsermodus worden uitgevoerd, dwz dat er geen browser wordt geopend en de uitvoering razendsnel wordt, zodat u uw testscripts en de functionaliteit snel kunt voltooien in geval van dringende release en validaties.

U kunt in principe gebruiken htmlUnitdriver or spookbestuurder voor de uitvoering zonder hoofd met Selenium.  

Nadelen van selenium:

  • Native/Windows-gebaseerde app-ondersteuning, niet aanwezig: 
    • Selenium wordt gebruikt voor het automatiseren van Web Bade-applicaties, maar biedt geen ondersteuning voor native applicaties of Windows-gebaseerde applicaties.
  • Uitputtende op afbeeldingen gebaseerde automatisering: 
    • Selenium biedt geen volledige ondersteuning voor het automatiseren van op afbeeldingen gebaseerde problemen of applicaties, hoewel we enkele tools van derden kunnen gebruiken, zoals Sikuli, op tesseract ocr gebaseerde oplossingen die kunnen worden geïntegreerd met Selenium om het werk te doen dat verband houdt met de beeldvalidaties / bewerkingen of extracties en validaties van afbeeldingsgegevens, ze hebben ook enkele beperkingen, zoals problemen met parallelle tests, het identificeren van handgeschreven documenten en het valideren van die in het proces van het automatiseren van uw toepassing als er dergelijke gebruiksscenario's zijn.
  • Integratie met tools van derden: 
    • Een nadeel van de integratie met meerdere tools van derden met selenium is dat uw automatiseringsscript soms langzamer wordt.
  • Selenium kader Ontwikkeling :
    • Het ontwerpen en ontwikkelen van een geavanceerd testautomatiseringsraamwerk met Selenium vereist veel expertise op het gebied van selenium en het is niet zo eenvoudig om samen met Selenium een ​​automatiseringsraamwerk te bouwen met meerdere tools.
  • Browserspecifieke problemen: 
    • U kunt een aantal browserspecifieke problemen tegenkomen tijdens het werken met Selenium, vooral met IE, soms kunt u webacties zoals klikken, verstuurtoetsen enz. Niet verwerken en kan de browser doodgaan. Daarom moet u over voorkennis beschikken om met die gebieden om te gaan terwijl u de applicatie die op Bootstrap JS is gebouwd, automatiseert en deze in de IE-browser uitvoert.
    • U kunt ook problemen ondervinden met browsercompatibiliteit met de Selenium Webdriver-versies; u moet ervoor zorgen dat u de compatibele Firefox, Chrome of een andere browser gebruikt waarmee u werkt met de Selenium Webdriver-versie.
  • Geen officiële ondersteuning: 
    • Net als alle andere open source-tools is selenium ook een open-source-tool, wat betekent dat je geen officiële ondersteuning voor je problemen hebt zoals bij alle betaalde tools, ook al is er een zeer grote community-ondersteuning beschikbaar, je kunt ermee werken met je probleemstelling , maar dat kan erg tijdrovend zijn.

Selenium componenten: 

Selenium als hulpmiddel heeft de onderstaande componenten, namelijk: 

Selenium-IDE:

  • Selenium IDE of Selenium Integrated Development-omgeving is de meest eerste versie van Selenium voor webapplicatie-automatisering.
  • Selenium IDE is een soort opname- en afspeeltool, die u als een plug-in van de browser kunt gebruiken en uw webactie van uw toepassingen kunt opnemen en die kan worden opgeslagen als een script en later kunt u hetzelfde opgenomen script uitvoeren om uit te voeren en te doen validaties.
  • Maar het heeft enkele beperkingen, zoals:
    • U moet het opgenomen script uitvoeren, het wijzigen van het script is niet zo flexibel of u kunt uw gebruiksscenario en scripts ook niet in uw eigen onafhankelijke benadering ontwerpen.
    • De uitvoering is erg traag van aard.
    • Ondersteunt Firefox grotendeels, hoewel er enkele aanpassingen zijn die u kunt doen om het opgenomen script in andere browsers zoals Google Chrome uit te voeren.
    • parallelle uitvoering wordt niet ondersteund.
    • Mobiel testen wordt niet ondersteund.
    • Het genereren van rapporten is helemaal niet goed.
  • Het is eigenlijk een zeer voorlopige versie van Selenium, door dit te gebruiken, kunt u zeer beperkte testautomatisering uitvoeren voor uw webapplicaties.

Selenium RC

  • Selenium Remote Control is de volgende versie van Selenium en wordt vaak Selenium 1.0 genoemd.

Hoe Selenium RC intern werkt:

Selenium RC bestaat uit twee hoofdcomponenten, zoals Selenium Server, Selenium Client.

De Selenium Server start de browsers en voert de seleniumopdrachten uit die u hebt geschreven als een testautomatiseringsscript door gebruik te maken van Selenium-clientbibliotheken die beschikbaar zijn in verschillende talen.

Selenium Server converteert de commando's / testscripts naar iets dat Selenese-commando's wordt genoemd, en het fungeert als een HTTP-proxy.

Selenium Server werkt samen met de webbrowser-engine en voert de webbewerking uit die u probeert te automatiseren als onderdeel van testcases voor de toepassing die wordt getest.

Stappen om Selenium RC te gebruiken: 

  • Installeer de Selenium-RC-server.
    • Maak een project met de programmeertaal van uw keuze en de taal die specifiek is voor het browserstuurprogramma.
  • Selenium-server installeren
    • U kunt Selenium Server instellen door simpelweg het bestand selenium-server.jar te downloaden en het op uw systeem uit te voeren met behulp van de onderstaande opdracht: 
    • java -jar selenium-server.jar
  • Schrijf het script met behulp van Selenium-clientbibliotheken en hetzelfde met de Selenium-server.

Beperkingen van Selenium RC:

  • In Selenium Remote control worden automatiseringsstuurprogramma en browser een beetje langzamer omdat de browsermotor niet rechtstreeks met elkaar in wisselwerking staat, in plaats daarvan injecteert Selenium RC javascript in de browsermotor, ook wel Selenium Core genoemd.
  • De server die voor en tijdens de uitvoering van het testscript moet draaien.
  • Geavanceerde webacties kunnen niet worden geautomatiseerd en afgehandeld met behulp van Selenium RC, zoals muisbewegingen, dubbelklikken, invoer van toetsenbord enz. Enz. In tegenstelling tot Selenium Webdriver.
  • Selenium RC biedt geen ondersteuning voor het testen van mobiele apps.
  • Selenium RC is afhankelijk van de echte browser om het Automation-testscript uit te voeren, en het ondersteunt de headless-browser zoals HTMLUnitDriver of GHostDriver enz. In tegenstelling tot Selenium Webdriver niet.

Selenium-webstuurprogramma:

Selenium Webdriver is de geavanceerde versie van de Selenium-componenten die zeer robuust is en ook de geavanceerde versie van webinteracties ondersteunt en ook geen interactie heeft met de browser via Javascript in tegenstelling tot Selenium RC en ook de testondersteuning voor mobiele applicaties heeft. Het wordt vaak een onderdeel van Selenium 2.0 genoemd.

WebDriver kan dynamische elementen aan en ondersteunt ook parallelle uitvoering met meerdere verschillende browsers.

We zullen een gedetailleerde bespreking hebben in de komende segmenten.

Selenium RASTER: 

Selenium GRID is een ander onderdeel van Selenium waarmee u uw automatiseringstestscript op afstand kunt uitvoeren door master-slave-knooppunten te maken. Selenium GRID ondersteunt parallel testen op dezelfde browser en meerdere browsers. 

We zullen in de komende secties verder discussiëren over Selenium GRID.

WebDriver 3.0

Selenium 3.0 is de nieuwste versie van Selenium-componenten, in feite de combinatie van WebDriver 2.0 en evolutie van GRID 3.

In dit volgende segment staan ​​we op het punt om de Selenium WebDriver-architectuur in detail, en uiteindelijk toont het hoe Selenium intern werkt,.

Selenium Webdriver-architectuur  :

Er zijn vijf belangrijke kenmerken of componenten als onderdeel van de Selenium Webdriver-architectuur: 

    

  • Selenium Client Library of Selenium-Programming taalbindingen
  • WebDriver-protocol of JSON Wire Protocol via HTTP
  • Browser-stuurprogramma's
  • Browser-engine
  • Browser's rendering Engine
Selenium Webdriver-architectuur
Selenium Tutorial-Selenium Webdriver-architectuur

Selenium-clientbibliotheken of programmeertaalbindingen: 

Selenium biedt verschillende taalbinding, dwz de clientbibliotheken om meerdere verschillende talen te ondersteunen als onderdeel van uw Automation Development en Automation-testscript. Bijvoorbeeld Selenium met C #, Selenium met Java, Selenium met Python etc.

WebDriver Protocol of JSON WIRE PROTOCOL:

JSON wat in feite staat voor JavaScript Object Notation. Dit protocol wordt ook wel het WebDriver-protocol genoemd, dat wordt gebruikt voor gegevensoverdracht tussen server en client via internet. Elke Browser Driver (bijv. FirefoxDriver, ChromeDriver etc.) heeft zijn eigen HTTP-server en gebruikt dit protocol om gegevens over te dragen via Rest Webservices in de vorm van het HTTP-verzoek en HTTP-antwoord.

 Browserdrivers:

Elke browser heeft zijn eigen browserdriver. De browserdrivers brengen communicatie tot stand met de respectieve browser via de browser-engine. 

Wanneer het automatiseringsscript wordt uitgevoerd, communiceert het rechtstreeks met de browserstuurprogramma's en uiteindelijk met de respectieve browser. Het verzoek en antwoord worden overgedragen via HTTP-verzoek en HTTP-antwoord.

Browsers-engine:

Elke browser heeft zijn eigen browsermotor; De browser-engine werkt in feite als een tussenlaag tussen de gebruikersinterface en de rendering-engine.

Browserweergave-engine: 

De rendering-engine van de browser is verantwoordelijk voor het weergeven van het gevraagde document door de specifieke elementen weer te geven die nodig zijn voor het verzoek-antwoord en de gegevens.

Selenium Webdriver Architectuur en werkende functionaliteit in een notendop :

Selenium-WebDriver roept de browser rechtstreeks op met behulp van de native ondersteuning van elke browser voor automatisering en de JavaScript-engine. Hoe deze oproepen worden gemaakt en de functies die ze ondersteunen, zijn afhankelijk van de browser die u gebruikt.

Het injecteert geen JavaScript zoals Selenium-RC wanneer de browser wordt geladen.

De volgende incidentie doet zich voor tijdens het uitvoeren van het Webdriver-script:

  •  We doen de automatiseringsscripting met behulp van elke taalbinding (Java / C # enz.), en het activeert de WebDriver API terwijl het script in uitvoering is.
  •   Het script en eventueel de commando's (bijv. driver.findElement (By.id (“idName”))) zijn: intern naar JavaScript worden geconverteerd.
  •   Met Browser Engine is het weer zover geconverteerd naar JSON, wat een soort sleutel / waarde-paar is.
  •   Na het verkrijgen van de respectieve waarde van de respectieve sleutel, het identificeert de respectieve WebElements en voert de respectieve gebruikersacties uit (zoals klikken, sleutels verzenden, enz.).
  •   Alle communicatie wordt gedaan met behulp van een JSON-Wire- of Webdriver Protocol-oproep, en de communicatie vindt plaats via HTTP in de vorm van Rest API als een HTTP-verzoek en HTTP-reactie.

Selenium veelgestelde vragen: 

Wat zijn de soorten WebDriver API's die beschikbaar zijn in Selenium?

Selenium Webdriver is een interface en heeft verschillende taalbindingen voor verschillende programmeertalen zoals Java, C #, Python etc., 

Selenium Webdriver heeft voornamelijk twee verschillende varianten, zoals: 

  • Selenium web-stuurprogramma lokaal.
  • Selenium web-stuurprogramma afstandsbediening. 

De Selenium Web-driver Local gebruikt de API om met de specifieke taalbinding te werken, en u kunt hiermee werken met uw lokale uitvoering, terwijl u aan de andere kant uw automatiseringstestscripts in Remote wilt uitvoeren, dan moet u de externe Selenium Web-stuurprogramma-API's.

Leg uit Wat zijn de scenario's die we niet kunnen automatiseren met Selenium?

Selenium biedt geen manier om de onderstaande aspecten van de applicatie te automatiseren, namelijk: 

  • Prestatietests van de applicatie
  • Beveiligingstests van de applicaties.
  • Op afbeeldingen gebaseerde verwerking en automatisering
  • Op Captcha gebaseerde automatisering.
  • Scenario's voor videostreaming.
  • Native applicatie of op venster gebaseerde applicaties.
  • Streaming-applicaties

Verschil tussen Selenium 2.0 en Selenium 3.0?

  • Voor Selenium 2.0 is de minimale vereiste Java 1.7, aan de andere kant is voor Selenium 3.0 de minimaal vereiste Java-versie 1.8
  • Selenium 3.0 vereist GeckOdriver voor Firefox-versie boven 47, maar dit is niet het geval voor Selenium 2.0 
  • Selenium 3.0 ondersteunt moderne browser zoals Edge, Safari etc. maar aan de andere kant voor Selenium 2.0, browserstuurprogramma voor Mozilla, Chromedriver, IE die is ontwikkeld door Selenium-ontwikkelaars.
  • In Selenium 3 is de ondersteuning voor mobiele automatiseringstests verwijderd, dat wil zeggen AndroidDriver en iPhoneDriver, en je moet tools gebruiken zoals Appium voor testen van mobiele automatisering, wat niet het geval is voor Selenium 2.0.
  • Selenium 3.0 ondersteunt de Headless driver niet, dwz HTMLUnitWebDriver, maar Selenium 2.0 heeft de ondersteuning voor Headless uitvoering, dwz met HTMLUnitDriver of ghostdriver.
  • Binnen Selenium 3 is de Selenium WebDriver de W3C-standaard geworden; aan de andere kant behoort Selenium Webdriver in Selenium 2.0 niet tot de W3C-standaard.

Conclusie : Hiermee voltooien we het eerste segment van Selenium zelfstudie zwartboek aan het bedekken Wat is Selenium, Selenium Webdriver Architectuur, Selenium overzicht, Voors en tegens van Selenium, In het aankomende segment van Selenium-zelfstudie module 2 zullen we bespreken over Selenium-installatie, dwz installatie, Selenium-opdrachten en andere basis-, tussen- en geavanceerde onderwerpen van Selenium

Laat een bericht achter