Als een testeur of een gevorderd webontwikkelaar moet u uw toepassingen testen voor bugs en prestaties op alle beschikbare browsers en besturingssystemen. Maar met zoveel afhankelijkheden in handen, niet alleen verschillende browsers, maar ook verschillende versies, wordt het zeker een lastige taak.
Het belangrijkste is dat alle这些过程自动化 moeten worden tot in zijn reikwijdte, want bij grote bedrijven zou het individueel testen van gevalletjes en pijplijnen duur zijn en de meest opvallende, minst gewenste methode ooit. Nu komt Selenium Grid in beeld, een uitgebreid gebruikte servergebaseerde testautomatisatool.
Wat is Selenium Grid?
Selenium Grid is een tool dat gebruikt wordt voor parallelle en continu testen op meer dan één browser en omgeving. Het laat u testen gelijktijdig op verschillende machines uitvoeren tegen verschillende browsers en besturingssystemen. Het doel van Selenium Grid is de testuitvoeringlast over meerdere machines uit te delen, waardoor het sneller is om een groot aantal testen uit te voeren.
De architectuur van Selenium Grid bestaat voornamelijk uit een hub en veel knooppunten. De hub dient als een centrale punt waar testverzoeken moeten worden verzonden. Knooppunten zijn de machines (fysieke of virtuele) waar de testen worden uitgevoerd. De hub routeert de testuitvoeringverzoeken naar de juiste knooppunten op basis van de browser- en platformconfiguraties die in de testscripts zijn opgegeven.
Selenium Grid ondersteunt diverse configuraties en geDistribueerde testen, inclusief parallelle uitvoering en selectieve browsercapaciteitstesten. Het wordt veelvuldig gebruikt in geautomatiseerde testen om de compatibiliteit en functionaliteit te waarborgen over verschillende browsers en platformen.
Waarom is Selenium Grid nodig?
U zult zeker heel geïnteresseerd zijn in het begrijpen waarom we het nodig hebben. Als we het specifieker bekijken, maakt het deel uit van de Selenium-suite, die ook andere software en functies omvat zoals Selenium WebDriver en Selenium IDE, en we zien hoe het browsers zoals Chrome, Microsoft Edge, Opera, Safari en alle hun verschillende versies kan ondersteunen. Daarnaast kan het deze browsers ook op meerdere besturingssystemen uitvoeren, creërend een eind-tot-eindtestomgeving. Al vanwege zijn open-source karakter is het ook gratis beschikbaar en krijgt hij de snelste updates en ontwikkelingen met volledige toegang tot alle informatie.
Selenium Grid architectuur
Laat ons de architectuur van Selenium Grid begrijpen. Selenium Grid werkt met het model van Hub en Node, waar één Hub wordt verbonden met meerdere nodes en op verschillende machines, browsers en verschillende versies van hun browsers kunnen worden uitgevoerd.
Hub fungeert als het centraal punt in de Selenium grid, die testopdrachten doorstuurt naar de nodes. Het ontvangt ook testverzoeken van de cliënt en rol ze uit naar de vereiste nodes. Hub wordt op een enkele machine gelanceerd met een vastgestelde besturingssystem en een browser met de complete test browsers en hun versies, en ook met de mogelijkheid om op meerdere apparaten te installeren die het compatible besturingssysteem draaien.
Selenium heeft ook andere componenten in de architectuur gedefinieerd, die in detail worden uitgelegd op hun website, die nuttig kunnen zijn om Selenium in zijn volledig gedistribueerde modus uit te voeren met routeurs, sessies en distributors goed gedefinieerd. Nu dat we voldoende achtergrondkennis hebben op SeleniumGrid,
kunnen Selenium Grid in 4 eenvoudige stappen geïnstalleerd en gebruikt worden
Stap 1
In stap 1, laten we de voorwaarden snel inrichten.
Eerst moeten we er voor zorgen dat we de最新版 vanJava of Java 11 en hoger uitvoeren. dit kan worden gedownload van de officiële website.
Dan zullen we moetenalle benodigde browsers die we willen testen installeren. We zullen een Chrome browser driver gebruiken met versie 123 om toegang tot de Chrome browser te krijgen. Vergeet ook niet dat de versies van zowel driver als browser moeten zijn om de Selenium servers te kunnen uitvoeren. En tenslotte zal ik Eclipse IDE gebruiken, aangezien deze demo zal zijn gebaseerd op Java. Deze IDE kan worden gedownload van de officiële Eclipse website.
Voor het laatste voorwaarde zou ik de 最新版本的Selenium Grid服务器 van de officiële Selenium website moeten downloaden.
Stap 2
Nu gaan we verder met stap 2. Voor stap 2 heb ik een nieuwe map aangemaakt en heb ik mijn Selenium server en Chrome driver geplakte die ik voor deze demo zal gebruiken.
package Selenium_test1 ;
import java.net.MalformedURLException;
public class test1{
String hubUrl ="https://10.20.31.20";
String url ="https://www.world.co/search";
WebDriver driver;
public void setupGrid()
{
DesiredCapabilities ds= new DesiredCapabilities();
ds.setCapability("browserName", "Chrome");
try{
driver = new RemoteWebDriver( new URL(hubUrl),ds);
} catch (malformedURLException e){
e.printSTackTrace();
}
driver.get(url);
}
public void pageTitleValidation(){
String title = driver.getTitle();
System.out.println("page title :" +title);
}
public static void main(String[] args)
{
test1 obj = new test1();
obj.setupGrid();
obj.pageTitleValidation();
}
}
Stap 3
Nu, voor stap 3, heb ik mijn Eclipse IDE geopend en heb ik met behulp van WebDriver mijn testgeval geschreven. We zullen een nieuw Maven-project aan het uitproberen zijn van andere. Daarnaast moet ook de Chrome driver die in een specifieke map zal worden gebruikt worden geplakt. De versie van het Selenium server die wordt gebruikt, moet worden verwijderd aan deze projectmap door de stappen die ik nu zal volgen. Ik kan naar mijn projectnaam gaan, rechts klikken en naar de bouwpaad ga. Van hieruit kunnen we naar configureer de bouwpaad en aan de rechterkant zien we een mogelijkheid genaamd toevoegen van externe taken. Vanaf hier kunnen we de Selenium server die ik gebruik verder toevoegen.
Klik toepassen en sluiten, en daarna gaan we door naar stap 4.
Stap 4
Nu voor stap 4, zijn we teruggekeerd naar de map die we in stap 2 maakten. Hier zal ik de命令提示符 gebruiken.
Dit maakt het erg gemakkelijk om de map te vinden en het is een eenvoudig proces. Aangezien dit maar één machine en één browser is, zal ik Selenium Edge Sandaland modus gebruiken.
Nu wordt de server gestart. Hij voegt de vereiste afhankelijkheden één voor één toe, en het proces wordt voltooid. Hij heeft ons een specifiek adres gegeven om naar toe te gaan. Nu zal ik dit adres kopiëren en teruggaan naar stap 3. Hier, in de hub URL, zal ik dit adres plakken, en nadat mijn code klaar is, zal ik naar het bestand gaan en deze als applicatie uitvoeren.
Goed, dus nu dat ik zie dat de applicatie wordt uitgevoerd, zal ik naar mijn Chrome browser gaan, en ik zal het adres plakken dat ik bij de command prompt kreeg. Dit is mijn Selenium adres en ik zie dat de sessies worden uitgevoerd. In overzicht kan ik zien dat volledige stereotypen voor Chrome zijn aangemaakt. En in sessies wordt mijn standaard testscenario actief uitgevoerd. U kunt ook de webpagina zien.
Gridrollen
Het Grid bestaat uit zes verschillende componenten die u flexibel laten deployen van uw testautomatisering op meerdere manieren. U kunt ze op eigen steunen starten, ze als een hub groeperen, of we kunnen ze op één enkele machine uitvoeren.
1. Alleenstaand
Met de standalone
component wordt het hele Grid onder een enkele entiteit samengebracht. Door de standalone
modus te starten, kun je gemakkelijk een volledig operationeel Grid met één enkele opdracht uitvoeren, allemaal binnen één proces. Het is belangrijk te merken dat standalone
alleen op één enkele machine kan worden uitgevoerd.
java -jar selenium-server-<version>.jar standalone
2. Hub en Node
Hub en node zijn de meest populaire en voornamelijk gebruikte componenten. Ze laten gebruikers verschillende machines met verschillende besturingssystemen en browserversies combineren. Dankzij dit krijgt u een enkele toegang om webdriver tests in meerdere omgevingen uit te voeren.
hub
bestaat uit Router
, Distributor
, Event bus
en Session Queue
:
java -jar selenium-server-<version>.jar hub
node
detecteert meerdere beschikbare bestuurders vanuit het systeempad.
java -jar selenium-server-<version>.jar node
Samenvatting
In het begin, om te samenvatten, faciliteert Selenium Grid de parallelle uitvoering van meerdere testen over meerdere browsers en platforms, met behulp van de hub-node architectuur. Het centrum dient als het centrale repositoire voor het behouden van testen, terwijl de nodes als Selenium-instanties fungeren, deze testen uitvoerend naar instructies van de hub. Het installeren van Selenium Grid bestaat uit het downloaden van de Selenium Server jar-bestand, hetzelfde bestand dat gebruikt wordt voor het uitvoeren van Selenium RC-testen. Om te controleren of de hub operationeel is, kan dit worden bereikt via de commandprompt of een webbrowser. Om het uitvoeren van de testscripts op de Grid te behouden, is het nodig om de DesiredCapabilities
en RemoteWebDriver
objecten te gebruiken. DesiredCapabilities
configureert het type browser en het besturingssysteem voor automatisering, terwijl RemoteWebDriver
de node of machine toewijst voor het uitvoeren van onze testen.