efficient selenium scripting
I forrige opplæring diskuterte vi de tekniske implikasjonene mens du implementerer logging i et rammeverk . Vi diskuterte log4j-verktøyet i lengden. Vi diskuterte de grunnleggende komponentene som utgjør log4j fra et brukervennlighetsperspektiv. Med Appenders og layouts blir en bruker utnyttet til å velge ønsket loggformat / mønster og datakilde / sted.
I den nåværende 27. veiledningen i denne omfattende gratis selen online opplæringsserie , ville vi skifte fokus mot noen få trivielle men viktige emner som vil hjelpe oss med å feilsøke noen tilbakevendende problemer. Vi bruker dem kanskje ikke i daglig skripting, men de vil være nyttige i det lange løp.
Vi ville diskutere noen forhåndskonsepter der vi vil håndtere mus- og tastaturhendelser, få tilgang til flere lenker ved å implementere lister . Så hvorfor ikke bare starte og diskutere disse emnene kort ved hjelp av passende scenarier og kodebiter.
beste nettsteder å se anime gratis
Hva du vil lære:
- JavaScript-utførere
- Få tilgang til flere elementer i en liste
- Håndtering av tastatur- og musearrangementer
- Konklusjon
- Anbefalt lesing
JavaScript-utførere
Mens du automatiserer et testscenario, er det visse handlinger som blir en iboende del av testskriptene.
Disse handlingene kan være:
- Å klikke på en knapp, hyperkobling osv.
- Skrive i en tekstboks
- Bla vertikalt eller horisontalt til ønsket objekt blir synliggjort
- Og mye mer
Nå er det tydelig fra tidligere opplæringsprogrammer at den beste måten å automatisere slike handlinger er ved å bruke Selenium-kommandoer.
Men hva om selen-kommandoene ikke fungerer?
Ja, det er absolutt mulig at de helt grunnleggende og elementære Selen-kommandoene ikke fungerer i visse situasjoner.
Når det er sagt, for å kunne feilsøke en slik situasjon, skulder vi JavaScript-utførere inn i bildet.
Hva er JavaScript Executors?
JavascriptExecutor-grensesnittet er en del av org.openqa.selenium og implementerer java.lang.Object-klassen. JavascriptExecutor presenterer mulighetene for å utføre JavaScript direkte i nettleseren. For å kunne utføre JavaScript, er det gitt visse mekanismer i form av metoder sammen med et bestemt sett med parametere i implementeringen.
Metoder
executeScript (strengskript, args)
Som metodens navn antyder, kjører den JavaScript i det nåværende vinduet, varselet, rammen osv. (Vinduet som WebDriver-forekomsten for tiden fokuserer på)
executeAsyncScript (strengskript, args)
Som metodens navn antyder, kjører den JavaScript i det nåværende vinduet, varselet, rammen osv. (Vinduet som WebDriver-forekomsten for tiden fokuserer på)
Parametrene og importoppgaven er felles for begge utføringsmetodene.
Parametere
Skript - skriptet som skal utføres
Argument - parametrene som skriptet krever for utføring (hvis noen)
Importuttalelse
For å kunne bruke JavascriptExecutors i testskriptene våre, må vi importere pakken ved hjelp av følgende syntaks:
importer org.openqa.selenium.JavascriptExecutor;
Eksempelkode
beste mp3 nedlastingssider for android
# 1) Klikk på et webelement
// Locating the web element using id WebElement element = driver.findElement(By.id('id of the webelement')); // Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Clicking the web element js.executeScript('arguments(0).click();', element);
# 2) Skriving i en tekstboks
// Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Typing the test data into Textbox js.executeScript('document.getElementById(‘id of the element’).value=’test data’;”);
# 3) Rull ned til webelementet er i visningen
WebElement element=driver.findElement(By.xpath('//input(contains(@value,'Save'))')); // Instantiating the javascriptExecutor and scrolling into the view in the single test step ((JavascriptExecutor)driver).executeScript('arguments(0).scrollIntoView(true);',element);
Du kan finne forskjellige andre måter å skrive koden for å få tilgang til JavascriptExecutors.
Få tilgang til flere elementer i en liste
Noen ganger kan vi komme over elementer av samme type som flere hyperkoblinger, bilder osv. Ordnet i en ordnet eller uordnet liste. Dermed er det absolutt fornuftig å håndtere slike elementer med en enkelt kode, og dette kan gjøres ved hjelp av WebElement List. Se skjermbildet nedenfor for å forstå elementene jeg snakker om.
På bildet ovenfor ser vi at de forskjellige tjenesteleverandørene hører til en ikke-ordnet liste. Dermed kan verifisering av klikkbarhet og synlighet av disse elementene gjøres med en enkelt kode ved å bruke en liste over elementer.
Importuttalelse
For å kunne bruke en WebElement-liste i testskriptene våre, må vi importere pakken ved hjelp av følgende syntaks:
importere java.util.List;
Eksempelkode
// Storing the list List serviceProviderLinks = driver.findElements(By.xpath('//div(@id='ServiceProvider')//ul//li')); // Fetching the size of the list int listSize = serviceProviderLinks.size(); for (int i=0; iDet er forskjellige krav som listene kan bruke for å verifisere elementene med passende implementeringsendringer.
Håndtering av tastatur- og musearrangementer
Håndtere tastaturhendelser
Som også sagt tidligere, er det n antall måter å håndtere den samme problemstillingen i forskjellige sammenhenger.
Noen ganger oppstår det derfor en nødvendighet for å håndtere et problem ved å endre den konvensjonelle handelsstrategien med en mer avansert strategi. Jeg har vært vitne til tilfeller der jeg ikke kunne håndtere varsler og dukke opp osv. Av selen-kommandoer, og derfor måtte jeg velge forskjellige Java-verktøy for å håndtere det ved hjelp av tastaturstrekk og mushendelser.
Robotklasse er et slikt alternativ for å utføre tastaturhendelser og musearrangementer.
La oss forstå konseptet ved hjelp av et scenario og dets implementering.
Scenario:
La oss samle en situasjon der en unødvendig pop-up vises på skjermen som ikke kan aksepteres eller avvises ved hjelp av varselgrensesnitt, og det eneste kloke alternativet vi har igjen er å lukke vinduet ved hjelp av hurtigtaster - 'Alt + mellomrom + C' . La oss se hvordan vi lukker popup ved hjelp av Robot Class.
Før vi starter implementeringen, bør vi importere den nødvendige pakken for å kunne bruke Robot-klassen i testskriptet vårt.
Importerklæring
importere java.awt.Robot;
Eksempelkode
// Instantiating Robot class Robot rb =new Robot(); // Calling KeyPress event rb.keyPress(KeyEvent.VK_ALT); rb.keyPress(KeyEvent.VK_SPACE); rb.keyPress(KeyEvent.VK_C); // Calling KeyRelease event rb.keyRelease(KeyEvent.VK_C); rb.keyRelease(KeyEvent.VK_SPACE); rb.keyRelease(KeyEvent.VK_ALT);
Robotklasse kan også brukes til å håndtere mushendelser, men la oss her se på selenens evner til å håndtere mushendelser.
Håndtering av musearrangementer
WebDriver tilbyr et bredt spekter av interaksjonsverktøy som brukeren kan utnytte for å automatisere mus- og tastaturhendelser. Action Interface er et slikt verktøy som simulerer enkeltbrukerinteraksjoner.
Dermed vil vi være vitne til Action Interface for å holde musepekeren på en rullegardinmeny som deretter åpner en liste over alternativer i neste scenario.
Scenario:
- Hold musen på rullegardinmenyen
- Klikk på ett av elementene i listealternativene
Importerklæring
importer org.openqa.selenium.interactions.Action;
Eksempelkode
skallsorteringsalgoritme c ++
// Instantiating Action Interface Actions actions= new Actions(driver); // howering on the dropdown actions.moveToElement(driver.findElement(By. id ('id of the dropdown'))).perform(); // Clicking on one of the items in the list options WebElement subLinkOption=driver.findElement(By.id('id of the sub link')); subLinkOption.click();
Konklusjon
I denne opplæringen diskuterte vi noen avanserte emner relatert til effektiv skripting og feilsøking av scenarier der brukeren er pålagt å håndtere mus- og tastaturhendelser. Vi diskuterte også hvordan du lagrer mer enn ett webelement i en liste. Jeg håper du vil være i stand til å feilsøke disse hindringene hvis du opplever det.
Neste opplæring # 28 : For den kommende opplæringen i serien, vil vi diskutere konseptet med databasetesting ved bruk av Selenium WebDriver . Vi vil være vitne til mekanismen for databaseforbindelse, treffe selen-spørsmål og hente resultatene gjennom Selenium WebDriver Code.
Anbefalt lesing
- Introduksjon til Selen WebDriver - Selenium Tutorial # 8
- Feilsøking av selen-skript med logger (Log4j-opplæring) - Selen-opplæring # 26
- 30+ beste selenopplæringsprogrammer: Lær selen med virkelige eksempler
- Agurk Selen Tutorial: Agurk Java Selen WebDriver Integration
- Hvordan finne elementer i Chrome- og IE-nettlesere for å bygge selen-skript - Selen-veiledning nr. 7
- Implementering av vårt første WebDriver Script - Selenium WebDriver Tutorial # 10
- WebDriver Hele installasjonen og installasjonen med Eclipse - Selenium Tutorial # 9
- Lage generikk og testdrakter - Selen-opplæring # 22