efficient selenium scripting
I den foregående vejledning diskuterede vi de tekniske implikationer mens du implementerer logning i en ramme . Vi diskuterede log4j-værktøj i længden. Vi diskuterede de grundlæggende komponenter, de udgør log4j fra et brugervenligt perspektiv. Med Appenders og layouts udnyttes en bruger til at vælge det ønskede logningsformat / mønster og datakilde / placering.
I den aktuelle 27. tutorial i dette omfattende gratis selen online træningsserier , ville vi flytte vores fokus mod nogle få trivielle alligevel vigtige emner der vil guide os fejlfinde nogle tilbagevendende problemer. Vi bruger måske eller måske ikke dem i daglig scripting, men de vil være nyttige i det lange løb.
Vi ville diskutere nogle forhåndskoncepter, hvor vi vil beskæftige os med mus og tastaturbegivenheder, få adgang til flere links ved at implementere lister . Så hvorfor ikke bare starte og kort diskutere disse emner ved hjælp af passende scenarier og kodestykker.
java 8 interview spørgsmål og svar
Hvad du vil lære:
- JavaScript-eksekutører
- Adgang til flere elementer på en liste
- Håndtering af tastatur- og musebegivenheder
- Konklusion
- Anbefalet læsning
JavaScript-eksekutører
Mens du automatiserer et testscenarie, er der visse handlinger, der bliver en iboende del af testscripts.
Disse handlinger kan være:
- Klik på en knap, hyperlink osv.
- Indtastning i et tekstfelt
- Rul lodret eller vandret, indtil det ønskede objekt vises
- Og meget mere
Nu fremgår det af de tidligere tutorials, at den bedste måde at automatisere sådanne handlinger er ved hjælp af Selenium-kommandoer.
Men hvad nu hvis selen-kommandoerne ikke virker?
Ja, det er absolut muligt, at de meget grundlæggende og elementære Selen-kommandoer ikke fungerer i visse situationer.
Når det er sagt, for at være i stand til at foretage fejlfinding af en sådan situation, binder vi JavaScript-eksekutører ind i billedet.
Hvad er JavaScript-eksekutører?
JavascriptExecutor interface er en del af org.openqa.selenium og implementerer java.lang.Object klasse. JavascriptExecutor præsenterer mulighederne for at udføre JavaScript direkte i webbrowseren. For at kunne udføre JavaScript er der visse mekanismer i form af metoder sammen med et specifikt sæt parametre tilvejebragt i implementeringen.
Metoder
executeScript (streng script, args)
Som metodens navn antyder, udfører den JavaScript i det aktuelle vindue, alarm, ramme osv. (Det vindue, som WebDriver-forekomsten i øjeblikket fokuserer på)
executeAsyncScript (streng script, args)
Som metodens navn antyder, udfører den JavaScript i det aktuelle vindue, alarm, ramme osv. (Det vindue, som WebDriver-forekomsten i øjeblikket fokuserer på)
Parametrene og importerklæringen er fælles for begge eksekveringsmetoder.
Parametre
Script - det script, der skal udføres
Argument - de parametre, som scriptet kræver for dets udførelse (hvis nogen)
Importerklæring
For at kunne bruge JavascriptExecutors i vores testskripter er vi nødt til at importere pakken ved hjælp af følgende syntaks:
import org.openqa.selenium.JavascriptExecutor;
softwareudvikling livscyklus vandfaldsmodel
Prøvekode
# 1) Klik 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) Skrivning i et tekstfelt
// Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Typing the test data into Textbox js.executeScript('document.getElementById(‘id of the element’).value=’test data’;”);
# 3) Rul ned, indtil 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 finde forskellige andre måder at skrive koden på for at få adgang til JavascriptExecutors.
Adgang til flere elementer på en liste
Til tider kan vi støde på elementer af samme type som flere hyperlinks, billeder osv. Arrangeret i en ordnet eller ikke-ordnet liste. Det giver således absolut mening at håndtere sådanne elementer med et enkelt stykke kode, og dette kan gøres ved hjælp af WebElement List. Se skærmbilledet nedenfor for at forstå de elementer, jeg taler om.
På ovenstående billede ser vi, at de forskellige tjenesteudbydere hører til en ikke-ordnet liste. Således kan verificering af klikbarhed og synlighed af disse elementer udføres med et enkelt stykke kode ved hjælp af en liste over elementer.
Importerklæring
For at kunne bruge en WebElement-liste i vores testskripter er vi nødt til at importere pakken ved hjælp af følgende syntaks:
importere java.util.List;
Prøvekode
// 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; iDer er forskellige krav, under hvilke listerne kan bruges til at verificere elementerne med passende implementeringsændringer.
Håndtering af tastatur- og musebegivenheder
Håndtering af tastaturbegivenheder
Som også tidligere nævnt er der n antal måder at håndtere den samme problemstilling i forskellige sammenhænge.
Således opstår der til tider en nødvendighed for at håndtere et problem ved at ændre den konventionelle handelsstrategi med en mere avanceret strategi. Jeg har været vidne til tilfælde, hvor jeg ikke kunne håndtere alarmer og pop op osv. Ved hjælp af selen-kommandoer, så jeg var nødt til at vælge forskellige java-hjælpeprogrammer for at håndtere det ved hjælp af tastaturstreg og musebegivenheder.
Robotklasse er en sådan mulighed for at udføre tastaturbegivenheder og musebegivenheder.
Lad os forstå konceptet ved hjælp af et scenarie og dets implementering.
Scenarie:
Lad os samle en situation, hvor en unødvendig pop op vises på skærmen, som ikke kan accepteres eller afvises ved hjælp af Alert Interface, og den eneste kloge mulighed, vi har tilbage, er at lukke vinduet ved hjælp af genvejstaster - 'Alt + mellemrum + C' . Lad os se, hvordan vi lukker popup ved hjælp af Robot Class.
Før vi påbegynder implementeringen, skal vi importere den nødvendige pakke for at kunne bruge robotklassen inden for vores testscript.
Importerklæring
import java.awt.Robot;
Prøvekode
// 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å bruges til at håndtere musehændelser, men lad os her se på selenets muligheder for at håndtere musehændelser.
Håndtering af musebegivenheder
WebDriver tilbyder en bred vifte af interaktionsværktøjer, som brugeren kan udnytte til at automatisere mus- og tastaturhændelser. Action Interface er et sådant værktøj, der simulerer enkeltbrugerinteraktioner.
Således vil vi være vidne til Action Interface til musen svæve på en rullemenu, som derefter åbner en liste over muligheder i det næste scenario.
Scenarie:
- Hold musen på rullemenuen
- Klik på et af elementerne i listeindstillingerne
Importerklæring
import org.openqa.selenium.interactions.Actions;
Prøvekode
hvordan man udskriver en matrix i omvendt rækkefølge java
// 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();
Konklusion
I denne vejledning diskuterede vi nogle avancerede emner relateret til effektiv scripting og fejlfinding af scenarier, hvor brugeren skal håndtere mus- og tastaturhændelser. Vi diskuterede også, hvordan man gemmer mere end et webelement på en liste. Jeg håber, du vil være i stand til at foretage fejlfinding af disse hindringer, hvis du støder på.
Næste tutorial # 28 : For den kommende tutorial i serien vil vi diskutere begrebet databasetest ved hjælp af Selenium WebDriver . Vi ville være vidne til mekanismen til databaseforbindelse, at ramme selenforespørgsler og hente resultaterne via Selenium WebDriver Code.
Anbefalet læsning
- Introduktion til Selen WebDriver - Selen Tutorial # 8
- Fejlfinding af selen-scripts med logfiler (Log4j-tutorial) - Selen-tutorial # 26
- 30+ bedste selen-tutorials: Lær selen med rigtige eksempler
- Agurk Selen Tutorial: Agurk Java Selen WebDriver Integration
- Sådan finder du elementer i Chrome- og IE-browsere til opbygning af selen-scripts - Selen-tutorial # 7
- Implementering af vores første WebDriver Script - Selenium WebDriver Tutorial # 10
- WebDriver Hele installationen og installationen med Eclipse - Selenium-tutorial # 9
- Oprettelse af generik og testuites - Selen Tutorial # 22