Selenium WebDriver: TestNG voor het beheer van testcases en het genereren van rapporten

Deze Selenium WebDriver-zelfstudie zal u helpen de noodzaak te begrijpen om TestNG met Selenium te gebruiken voor het beheren van testcases en het genereren van gedetailleerde testrapporten.

In de vorige blog heb ik je geleerd hoe je je eerste Selenium WebDriver-test kunt uitvoeren. In deze blog zal ik geavanceerde Selenium WebDriver-concepten behandelen. Ik heb al een paar keer gezegd dat Selenium WebDriver beperkingen heeft met betrekking tot het beheer van testcases en het genereren van testrapporten. Dus, wat is het alternatief? Een tool die zo populair is als Selenium moet zeker een oplossing hebben, toch? Natuurlijk doet het! We kunnen een combinatie van Selenium en TestNG gebruiken om deze beperking te omzeilen en dat zal het onderwerp zijn van de discussie in deze blog.



servicenow tutorial voor beginners pdf

In het geval dat u nieuw bent bij Selenium en een inleiding tot de basisconcepten wilt, kunt u uw reis hier beginnen: ? De anderen kunnen echter vanaf deze blog aan de slag met TestNG voor Selenium.U moet ook weten dat organisaties actief op jacht zijn naar professionals met , waardoor het een belangrijke vaardigheid is voor softwaretesters om onder de knie te krijgen.



Softwareontwikkelaars van over de hele wereld zullen het er unaniem over eens zijn dat het schrijven van code in testgevallen een groot deel van hun foutopsporingstijd bespaart. Waarom? Dat komt omdat testcases helpen bij het creëren van robuuste en foutloze code. Hoe doet het dat? Door de volledige code op te splitsen in kleinere testcases en vervolgens door elk van deze testcases te evalueren om te slagen / mislukken, kunnen we foutloze code creëren. Omdat Selenium de uitvoering van code in testgevallen niet ondersteunt, moeten we TestNG hiervoor gebruiken. Dit is waar TestNG in het Selenium-framework past.

TestNG betekent Test de volgende generatie en het is een open-source testautomatiseringsraamwerk geïnspireerd door JUnit en NUnit. Nou ja, niet alleen geïnspireerd, maar een upgrade naar die twee frameworks. Dus je kunt je afvragen wat de upgrade hier is?De upgrade met TestNG is dat het aanvullende functionaliteit biedt, zoals: testannotaties, groepering, prioriteitstelling, parametrisering en sequentietechnieken in de code die eerder niet mogelijk waren.



Naast het beheren van testcases, kunnen zelfs gedetailleerde testrapporten worden verkregen met TestNG. Er zal een samenvatting zijn met de testcase die is mislukt, samen met de groep waarvan het deel uitmaakte en de klas waaronder het valt. Wanneer bugs op deze manier nauwkeurig kunnen worden gelokaliseerd, kunnen ze tot grote opluchting van ontwikkelaars onmiddellijk worden verholpen. De onderstaande afbeelding geeft de werking van TestNG weer.

testng - selenium webdriver

Dus, hoe klaart TestNG de klus? Deze vraag wordt beantwoord inhet volgende gedeelte van deze Selenium WebDriver-tutorialblog, waar ik zal bespreken hoe verschillende testcases kunnen worden beheerd met behulp van TestNG.



Selenium WebDriver met TestNG

Testgevallen kunnen op een van de volgende manieren worden gedefinieerd en beheerd:

  1. Test annotaties
  2. Prioritering
  3. Testcases uitschakelen
  4. Methode afhankelijkheid
  5. Groepering
  6. Beweringen
  7. Rapport genereren

Laat me beginnen met uitleggenelk van deze functionaliteiten.

Test annotaties

Laten we ons allereerst de volgende vraag stellen: waarom moeten we annotaties gebruiken? Wanneer kunnen we ze gebruiken? Annotaties in Selenium worden gebruikt om de volgende uit te voeren methode te besturen. Testannotaties worden voor elke methode in de testcode gedefinieerd. In het geval dat een methode niet wordt voorafgegaan door annotaties, wordt die methode genegeerd en niet uitgevoerd als onderdeel van de testcode. Om ze te definiëren, moeten methoden eenvoudig worden geannoteerd met ‘ @Test ‘. Kijk bijvoorbeeld naar het onderstaande codefragment.

pakket testng import org.openqa.selenium.WebDriver import org.openqa.selenium.firefox.FirefoxDriver import org.testng.annotations.AfterClass import org.testng.annotations.AfterMethod import org.testng.annotations.BeforeClass import org.testng.annotaties .BeforeMethod import org.testng.annotations.Test openbare klasse TestAnnotations {@Test public void myTestMethod () {System.out.println ('Inside method: - myTestMethod') WebDriver driver = nieuwe FirefoxDriver () driver.get ('http: //www.seleniumframework.com/Practiceform/ ') String title = driver.getTitle () System.out.println (titel) driver.quit ()} @BeforeMethod public void beforeMethod () {System.out.println (' This stukje code wordt uitgevoerd vóór methode: - myTestMethod ') System.setProperty (' webdriver.gecko.driver ',' C: UsersVardhanworkspaceSeleniumProjectfilesgeckodriver.exe ')} @AfterMethod public void afterMethod () {System.out.println (' Dit stuk code wordt uitgevoerd na methode: - myTestMethod ')} @BeforeClass public void beforeClass () {Syste m.out.println ('Dit stuk code wordt uitgevoerd voordat de klasse wordt uitgevoerd')} @AfterClass public void afterClass () {System.out.println ('Dit stuk code wordt uitgevoerd nadat de klasse is uitgevoerd')} }

In de bovenstaande code zou je hebben gemerkt dat ik geen ‘main’ -methode heb gedefinieerd. Ik heb echter 5 andere methoden gedefinieerd. Ze zijn ‘myTestMethod’, ‘beforeMethod’, ‘afterMethod’, ‘beforeClass 'en' afterClass '. Let ook op de volgorde waarin de methoden in de code worden gedefinieerd, omdat ze niet in dezelfde volgorde worden uitgevoerd.

De methode ‘myTestMethod’ is geannoteerd met @Test , en het is de belangrijkste methode of het stuk code dat moet worden uitgevoerd. Andere geannoteerde methoden worden uitgevoerd voordat en nadat deze methode is uitgevoerd. Omdat ‘beforeMethod’ is geannoteerd met @Bekijkhet_nu , wordt het uitgevoerd voordat ‘myTestMethod’ wordt uitgevoerd. Evenzo wordt ‘afterMethod’ geannoteerd met @AfterMethod , en dus zal het worden uitgevoerd na ‘myTestMethod’.

‘BeforeClass’ is echter geannoteerd met @Voor klas , wat betekent dat het wordt uitgevoerd zelfs voordat de klasse zelf wordt uitgevoerd. Onze klassenaam hier is TestAnnotaties , en dus voordat de klas begint te worden uitgevoerd, wordt het stuk code in ‘beforeClass’ uitgevoerd. Evenzo wordt ‘afterClass’ geannoteerd met @AfterMethod , en zal dus na de les worden uitgevoerd TestAnnotaties is geëxecuteerd.

Als u nog steeds verwarring heeft over de volgorde van uitvoering, dan zal het onderstaande fragment u zeker helpen.

1. BeforeSuite 2. BeforeTest 3. BeforeClass 4. BeforeMethod 5. Test 6. AfterMethod 7. AfterClass 8. AfterTest 9. AfterSuite

De output van de bovenstaande code zal zijn:

Dit stuk code wordt uitgevoerd voordat de klasse wordt uitgevoerd Dit stuk code wordt uitgevoerd vóór de methode: - myTestMethod Inside-methode: - myTestMethod 1493192682118 geckodriver INFO Luisteren op 127.0.0.1:13676 1493192682713 mozprofile :: profile INFO Profielpad gebruiken C: UsersVardhanAppDataLocalTprofile ust .wGkcwvwXkl2y 1493192682729 geckodriver :: marionette INFO Browser starten C: Program Files (x86) Mozilla Firefoxirefox.exe 1493192682729 geckodriver :: marionette INFO Verbinding maken met Marionette op localhost: 59792 [GPU 6152] WAARSCHUWING: pijpfout: 109: bestand c: / builds /moz2_slave/m-rel-w32-00000000000000000000/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346 1493192688316 Marionette INFO Luisteren op poort 59792 26 april 2017 13:14:49 org. openqa.selenium.remote.ProtocolHandshake createSession INFO: Gedetecteerd dialect: W3C JavaScript-fout: http://t.dtscout.com/i/?l=http%3A%2F%2Fwww.seleniumframework.com%2FPracticeform%2F&j=, regel 1: TypeError: document.getElementsByTagNa me (...) [0] is niet gedefinieerd Selenium Framework | Practiceform 1493192695134 Marionette INFO Nieuwe verbindingen worden niet langer geaccepteerd 26 april 2017 13:14:57 org.openqa.selenium.os.UnixProcess vernietigen ERNSTIG: Kan proces niet beëindigen met PID 6724 Dit stuk code wordt uitgevoerd volgens de methode: - myTestMethod Dit stuk code wordt uitgevoerd nadat de klasse is uitgevoerd PASSED: myTestMethod =================================== ============ Standaardtest Uitgevoerde tests: 1, fouten: 0, slaat over: 0 ======================== ======================= =========================== ==================== Standaard suite Totaal aantal uitgevoerde tests: 1, fouten: 0, overslaan: 0 =============== ================================

Zoals je kunt zien aan de bovenstaande uitvoer, is het aantal uitgevoerde tests 1 en mislukt 0. Dit betekent dat de code succesvol is. Zelfs de volgorde van uitvoering van methoden is in de volgordeikeerder vermeld.

Wanneer u deze code op uw computer uitvoert, zal Selenium WebDriver uw Firefox-browser instantiëren, naar het oefenformulier van Selenium Framework navigeren, de browserinstantie sluiten en dezelfde uitvoer weergeven als hierboven weergegeven in uw Eclipse IDE.

Ik heb maar 5 verschillende annotaties in mijn code gebruikt. Maar er zijn veel meer annotaties die kunnen worden gebruikt om de volgende uit te voeren methode te besturen. De volledige lijst met annotaties wordt uitgelegd in hettafelhieronder:

@BeforeSuite - De methode geannoteerd met @BeforeSuite wordt uitgevoerd voordat alle tests in de suite zijn uitgevoerd.

@AfterSuite - De methode geannoteerd met @AfterSuite wordt uitgevoerd nadat alle tests in de suite zijn uitgevoerd.

@BeforeTest - De methode geannoteerd met @BeforeTest wordt uitgevoerd voordat een testmethode die tot een klasse behoort, wordt uitgevoerd.

@AfterTest - De methode geannoteerd met @AfterTest wordt uitgevoerd nadat alle testmethoden die bij een klasse horen, zijn uitgevoerd.

@WillemII - De methode geannoteerd met @WillemII zal lopen voordat elke groep wordt uitgevoerd.

@AfterGroup - De methode geannoteerd met @AfterGroup zal lopen nadat elke groep is gerund.

@Voor klas - De methode geannoteerd met @Voor klas zal eenmaal worden uitgevoerd voordat de eerste testmethode in de huidige klasse wordt aangeroepen.

@Na de les - De methode geannoteerd met @Na de les wordt eenmaal uitgevoerd nadat alle testmethoden in de huidige klasse zijn uitgevoerd.

@Bekijkhet_nu - De methode geannoteerd met @Bekijkhet_nu wordt uitgevoerd voordat een testmethode binnen een klasse wordt uitgevoerd.

@AfterMethod - De methode geannoteerd met @AfterMethod wordt uitgevoerd nadat elke testmethode binnen een klasse is uitgevoerd.

@Test - De methode geannoteerd met @Test is de belangrijkste testmethode in het hele programma. Andere geannoteerde methoden zullen rond deze methode worden uitgevoerd.

Het screenshot van het TestNG-rapport ishieronder aanwezig: -

Prioritering

We spraken over hoe verschillende methoden kunnen worden gedefinieerd, zodat ze worden uitgevoerd rond de @Test methode. Maar wat als u er meer dan één heeft? @Test methode en u wilt de uitvoeringsvolgorde tussen hen definiëren?

In dat geval kunnen weP.rioritiseer ze door een nummer toe te kennen aan de geannoteerde testgevallen. Hoe kleiner het aantal, hoe hoger de prioriteit. Bij het definiëren van de testgevallen kan prioriteit worden toegekend als parameters. Maar als er geen prioriteit is toegewezen, worden de geannoteerde testmethoden uitgevoerd volgens de alfabetische volgorde van de tests. Bekijk de parameters van de testannotaties in het onderstaande stukcode.

@Test (Priority = 2) public static void FirstTest () {system.out.println ('This is the Test Case number Two vanwege Priority # 2')} @Test (Priority = 1) public static void SecondTest () { system.out.println ('This is the Test Case number One vanwege Priority # 1')} @Test public static void FinalTest () {system.out.println ('Dit is de laatste testcase omdat er geen prioriteit is' )}

Testcases uitschakelen

Ik zal je iets interessants laten zien. Wat als u een code heeft die een miljoen regels beslaat, bestaande uit honderden testgevallen, en u slechts één testmethode wilt uitschakelen? U hoeft in plaats daarvan geen enkel deel van de code te verwijderen, kunnen we die testmethode gewoon uitschakelen.

Het uitschakelen van een testcase wordt ook gedaan via parameters. We kunnen de ingeschakeld kenmerk toe aan ‘false’. Standaard zijn alle testgevallen ingeschakeld, dus we hoeven ze niet elke keer dat we een test schrijven, te definiëren. Bekijk de parameters van de derde en vierde methode in het onderstaande stukcode.

@Test (Priority = 2, enabled = True) public static void FirstTest () {system.out.println ('This is the Test Case number Two vanwege Priority # 2')} @Test (Priority = 1, enabled = True ) public static void SecondTest () {system.out.println ('This is the Test Case number One vanwege Priority # 1')} @Test (enabled = false) public static void SkippedTest () {system.out.println ( 'Dit is de overgeslagen testcase omdat deze is uitgeschakeld')} @Test (enabled = True) public static void FinalTest () {system.out.println ('Dit is de laatste testcase, die is ingeschakeld en geen prioriteit heeft ')}

Methode afhankelijkheid

Als u een situatie heeft waarin u wilt dat een stukje code alleen wordt uitgevoerd als het aan een voorwaarde voldoet of alleen als een bepaalde methode met succes wordt uitgevoerd, kunnen we dat doen door te gebruiken afhankelijkOnMethod (). Dit is in feite een voorwaarde van methode-afhankelijkheid waarbij een methode wordt uitgevoerd afhankelijk van een andere methode. Als we bovendien instellen altijd rennen attribuut op true, wordt de methode uitgevoerd ongeacht de fail / pass-voorwaarde van de afhankelijke methode. Bekijk de code in het onderstaande codefragment.

@Test public static void FirstTest () {system.out.println ('Dit is de eerste testcase die wordt uitgevoerd')} @Test (afhankelijkOnMethods = {'FirstTest'}) public static void SecondTest () {system.out. println ('Dit is de tweede testcase die moet worden uitgevoerd Dit is een afhankelijke methode')} @Test (afhankelijkOnMethods = {'SecondTest'}) public static void FinalTest () {system.out.println ('Dit is de laatste test Case Het zal hoe dan ook worden uitgevoerd. ')}

Dit brengt ons bij een ander belangrijk aspect in de testannotaties die is Groepering .

Groepering

Inmiddels moet u weten dat er een aantal methoden zal zijn als onderdeel van onze testcase in de code. Laten we zeggen dat er 100 testcases zijn, maar we willen in onze volgende test slechts 20 testcases uitvoeren. Denk je dat we dat kunnen? Natuurlijk kunnen we dat.

waar wordt data science voor gebruikt

We kunnen gebruiken groepen attribuut voor dit doel. We kunnen aan een aantal testgevallen een groepsnaam toekennen en er later voor kiezen om de groep uit te voeren in plaats van de hele code. Bekijk het onderstaande codefragment om het te begrijpenhoe groepen te maken.

@Test (groups = {'MyGroup'}) public static void FirstTest () {system.out.println ('This is a part of the Group: MyGroup')} @Test (groups = {'MyGroup'}) public static void SecondTest () {system.out.println ('This is also a part of the Group: MyGroup')} @Test public static void ThirdTest () {system.out.println ('Maar dit is geen onderdeel van de Groep: MyGroup ')}

TestNG-beweringen

Dit brengt ons nu naar het volgende onderwerp in TestNG, namelijk beweringen. Zoals de naam suggereert, kunnen beweringen worden gebruikt in testmethoden om de pass / fail-conditie van een test te bepalen. Op basis van de waar / niet-voorwaarde van een verklaring, zullen de tests slagen / mislukken.

In de onderstaande code heb ik 3 testmethoden opgenomen, waarbij de eerste en derde methode een pass-conditie hebben en de tweede methode een fail-conditie. Bekijk de code zelf.

pakket testng import org.testng.annotations.Test import org.testng.annotations.BeforeMethod import org.openqa.selenium.WebDriver import org.openqa.selenium.firefox.FirefoxDriver import org.testng.Assert import org.testng.annotations.AfterMethod public class Assertions {@BeforeMethod public void beforeMethod () {System.setProperty ('webdriver.gecko.driver', 'C: UsersVardhanworkspaceSeleniumProjectfilesgeckodriver.exe')} public boolean isEqual (int a, int b) {if (a == b ) {return true} else {return false}} @Test public void testEquality1 () {Assert.assertEquals (true, isEqual (10, 10)) System.out.println ('This is a pass condition')} @Test public void testEquality2 () {Assert.assertEquals (true, isEqual (10, 11)) System.out.println ('This is a fail condition')} @Test public void getTitle () {WebDriver-stuurprogramma = nieuw FirefoxDriver () -stuurprogramma. get ('https://www.gmail.com') String title = driver.getTitle () Assert.assertEquals (titel, 'Gmail') System.out.println ('Dit is weer een pass-voorwaarde')} }

Als u naar het rapport kijkt dat na deze uitvoering wordt gegenereerd, ziet u dat van de drie tests er één is mislukt en twee is geslaagd. Een ander belangrijk punt om op te merken is dat wanneer een bewering mislukt, andere commando's / regels code in die test zullen worden overgeslagen. Pas als de bewering een succes is, wordt de volgende regel code in die test uitgevoerd. Bekijk de output hieronder waar system.out.println is alleen uitgevoerd voor de eerste en derde methode.

1493277977348 geckodriver INFO Luisteren op 127.0.0.1:47035 1493277977993 mozprofile :: profile INFO Profielpad C gebruiken: UsersVardhanAppDataLocalTemp ust_mozprofile.Z7X9uFdKODvi 1493277977994 geckodriver :: marionette INFO Firefox-browser C: 1493277977994 geckodriver :: marionette INFO-browser C: 1493277977994 Verbinding maken met Marionette op localhost: 50758 [GPU 6920] WAARSCHUWING: pijpfout: 109: bestand c: / builds / moz2_slave / m-rel-w32-00000000000000000000 / build / src / ipc / chromium / src / chrome / common / ipc_channel_win. cc, line 346 1493277981742 Marionette INFO Luisteren op poort 50758 27 april 2017 12:56:22 org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Gedetecteerd dialect: W3C Dit is weer een pass condition Dit is een pass condition GESLAAGD: getTitle PASSED: testEquality1 FAILED: testEquality2 java.lang.AssertionError: verwacht [false] maar gevonden [true] op org.testng.Assert.fail (Assert.java:93) op org.testng.Assert.failNotEquals (Assert.java: 512) op org.testng.Assert.assertE qualsImpl (Assert.java:134) bij org.testng.Assert.assertEquals (Assert.java:115) bij org.testng.Assert.assertEquals (Assert.java:304) bij org.testng.Assert.assertEquals (Assert.java : 314) bij testng.Assertions.testEquality2 (Assertions.java:38) bij sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) bij sun.reflect.NativeMethodAccessorImpl.invoke (Unknown Source) bij sun.reflect.DelegatingMethodAccessorImpl. Source) op java.lang.reflect.Method.invoke (Unknown Source) op org.testng.internal.MethodInvocationHelper.invokeMethod (MethodInvocationHelper.java:108) op org.testng.internal.Invoker.invokeMethod (Invoker.java:661) op org.testng.internal.Invoker.invokeTestMethod (Invoker.java:869) bij org.testng.internal.Invoker.invokeTestMethods (Invoker.java:1193) op org.testng.internal.TestMethodWorker.invokeTestMethodWorker.invokeTestMethods ) bij org.testng.internal.TestMethodWorker.run (TestMethodWorker.java:109) bij org.testng.TestRunner.privateRun (TestRunner.java:744) bij org.testng.TestRu nner.run (TestRunner.java:602) bij org.testng.SuiteRunner.runTest (SuiteRunner.java:380) bij org.testng.SuiteRunner.runSequially (SuiteRunner.java:375) bij org.testng.SuiteRunner.privateRun (SuiteRunner .java: 340) bij org.testng.SuiteRunner.run (SuiteRunner.java:289) bij org.testng.SuiteRunnerWorker.runSuite (SuiteRunnerWorker.java:52) bij org.testng.SuiteRunnerWorker.run (SuiteRunnerWorker.java:86) bij org.testng.TestNG.runSuitesSequially (TestNG.java:1301) bij org.testng.TestNG.runSuitesLocally (TestNG.java:1226) bij org.testng.TestNG.runSuites (TestNG.java:1144) bij org.testng. TestNG.run (TestNG.java:1115) bij org.testng.remote.AbstractRemoteTestNG.run (AbstractRemoteTestNG.java:132) bij org.testng.remote.RemoteTestNG.initAndRun (RemoteTestNG.remote:230) bij org.testng. .RemoteTestNG.main (RemoteTestNG.java:76) ========================================= ======== Standaardtest Uitgevoerde tests: 3, fouten: 1, slaat over: 0 ============================ =================== =============================== ================ Standaard suite Totaal aantal uitgevoerde tests: 3, mislukkingen: 1, overslaan: 0 =================================== ============

Dat is dus het einde van de concepten met betrekking tot testcasebeheer. We houden nog een onderwerp over, en dat is het genereren van rapporten. Het genereren van rapporten is het laatste onderwerp in deze Selenium WebDriver-zelfstudie omdat rapporten pas kunnen worden gegenereerd nadat alletests worden uitgevoerd.

wat is functies in sql

Rapport genereren

Het belangrijkste dat u moet weten, is dat het rapport alleen wordt gegenereerd via een .xml-bestand. Dit betekent dat of het nu een methode is, of een klasse, of of het nu een groep is die u wilt testen, ze moeten allemaal worden gespecificeerd in het .xml-bestand.

U kunt dus eerst een nieuwe map onder uw project maken en een nieuw bestand in die map maken en een naam geven aan het bestand en het opslaan met de extensie .xml. U kunt de nieuwe map en het nieuwe bestand maken door met de rechtermuisknop op de pakketverkenner te klikken. Nadat u het bestand heeft gemaakt, gaat u naar het bron-tabblad onder in het venster en voert u de configuraties in zoals gespecificeerd in het onderstaande fragment.

 

De eerste regel is de XML-documenttypedefinitie. Dit is standaard en verplicht voor alle testrapporten. Maar de andere regels spreken voor zich. Ik heb de open tags gebruikt voor suite, test, klassen en klasse. Classes-tag kan een of meer klassen bevatten. Het kan dus worden gebruikt als we een rapport willen genereren waarin we meerdere klassen testen. Dit is vooral handig voor ontwikkelaars die een lang stuk code willen testen.

Hoe dan ook, terugkomend op ons rapport, u kunt elke suite, test of klas een naam geven nadat u die tags hebt geopend en vergeet niet elke tag die u opent te sluiten. Ik heb mijn suite naam gegeven als TestNGs , testnaam als Test Annotaties en klassenaam als testng.TestAnnotations. Houd er rekening mee dat de klassenaam de indeling heeft ' pakketnaam.klassenaam ’ .

Wanneer u dit bestand als TestNG-suite uitvoert, start de uitvoering en krijgt u de gedetailleerde testrapporten. U krijgt de testuitvoer op uw consoletabblad en het resultaat van de testsuite op het volgende tabblad. Het rapport dat ik heb gegenereerd voor het uitvoeren van mijn code isinde onderstaande screenshot. U zult opmerken dat er deze keer een suite-naam, testnaam, klassenaam is, samen met de tijd die nodig is om ze allemaal uit te voeren.

Als u het HTML-rapport (Indexrapport of E-mailrapport) wilt bekijken, kunt u naar het test-output map in de projectmap in uw werkruimte. Door erop te klikken, kunt u de rapporten ook op een later tijdstip bekijken. Hieronder staan ​​hun screenshots.

Indexrapport : -

E-mailbaar rapport : -

Dat brengt ons dus aan het einde van deze Selenium WebDriver tutorial blog. Het is tijd dat u eclipse aan uw kant installeert, de verschillende Selenium-pakketten installeert, TestNG installeert en aan de slag gaat met het schrijven van uw testcases.

U kunt de onderstaande Selenium WebDriver-instructievideo bekijken om getuige te zijn van een demonstratie van de verschillende concepten die in deze blog worden uitgelegd.

Selenium-training | TestNG Framework voor selenium | Edureka

Deze Edureka Selenium Trainingsvideo neemt je mee door de diepgaande details van Selenium WebDriver. Deze Selenium-instructievideo is ideaal voor zowel beginners als professionals die de basis van WebDriver-opdrachten willen opfrissen en leren hoe TestNG kan worden gebruikt met Selenium voor het beheren van verschillende testcases.

Als je Selenium wilt leren en carrière wilt maken in het testdomein, bekijk dan onze interactieve, live-online hier, dat wordt geleverd met 24 * 7 ondersteuning om u tijdens uw leerperiode te begeleiden.

Heeft u een vraag voor ons? Vermeld het in het opmerkingengedeelte en we nemen contact met u op.