efficient selenium scripting
I föregående handledning diskuterade vi de tekniska konsekvenserna samtidigt som loggning implementeras i ett ramverk . Vi diskuterade log4j-verktyget i längden. Vi diskuterade de grundläggande komponenterna som utgör log4j ur ett användbarhetsperspektiv. Med Appenders och layouter utnyttjas en användare för att välja önskat loggningsformat / mönster och datakälla / plats.
I den aktuella 27: e handledningen i detta omfattande gratis selen online-utbildningsserie , skulle vi flytta vårt fokus mot några triviala men ändå viktiga ämnen som skulle hjälpa oss felsöka några återkommande problem. Vi kan använda dem eller inte i dagliga skript, men de skulle vara till hjälp i det långa loppet.
Vi skulle diskutera några avancerade begrepp där vi skulle hantera mus- och tangentbordshändelser, få åtkomst till flera länkar genom att implementera listor . Så varför inte bara börja och kort diskutera dessa ämnen med hjälp av lämpliga scenarier och kodavsnitt.
hur man öppnar mkv-fil på Windows
Vad du kommer att lära dig:
- JavaScript-exekutörer
- Åtkomst till flera element i en lista
- Hantering av tangentbord och mushändelser
- Slutsats
- Rekommenderad läsning
JavaScript-exekutörer
När du automatiserar ett testscenario finns det vissa åtgärder som blir en inneboende del av testskript.
Dessa åtgärder kan vara:
- Klicka på en knapp, hyperlänk etc.
- Skriva i en textruta
- Bläddra vertikalt eller horisontellt tills det önskade objektet syns
- Och mycket mer
Nu framgår det av de tidigare självstudierna att det bästa sättet att automatisera sådana åtgärder är att använda Selen-kommandon.
Men tänk om selenkommandona inte fungerar?
Ja, det är absolut möjligt att de mycket grundläggande och elementära selenkommandona inte fungerar i vissa situationer.
Med det sagt, för att kunna felsöka en sådan situation, axlar vi JavaScript-exekutörer i bilden.
Vad är JavaScript Executors?
JavascriptExecutor-gränssnittet är en del av org.openqa.selenium och implementerar java.lang.Object-klassen. JavascriptExecutor presenterar möjligheterna att köra JavaScript direkt i webbläsaren. För att kunna köra JavaScript, tillhandahålls vissa mekanismer i form av metoder tillsammans med en specifik uppsättning parametrar i dess implementering.
Metoder
executeScript (strängskript, args)
Som metodnamnet antyder kör den JavaScript i det aktuella fönstret, varning, ram etc (fönstret som WebDriver-instansen för närvarande fokuserar på)
executeAsyncScript (strängskript, args)
Som metodnamnet antyder kör den JavaScript i det aktuella fönstret, varning, ram etc (fönstret som WebDriver-instansen för närvarande fokuserar på)
Parametrarna och importuttalandet är gemensamma för båda exekveringsmetoderna.
Parametrar
Skript - skriptet som ska köras
Argument - de parametrar som skriptet kräver för dess körning (om någon)
Importförklaring
För att kunna använda JavascriptExecutors i våra testskript måste vi importera paketet med följande syntax:
importera org.openqa.selenium.JavascriptExecutor;
Exempelkod
# 1) Klicka på ett webbelement
// 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) Skriva i en textruta
// Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Typing the test data into Textbox js.executeScript('document.getElementById(‘id of the element’).value=’test data’;”);
# 3) Bläddra ner tills webbelementet är i vyn
vad är den bästa gratis YouTube-nedladdaren?
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 hitta olika andra sätt att skriva koden för åtkomst till JavascriptExecutors.
Åtkomst till flera element i en lista
Ibland kan vi stöta på element av samma typ som flera hyperlänkar, bilder etc ordnade i en beställd eller oordnad lista. Det är alltså helt meningsfullt att hantera sådana element med en enda kod och detta kan göras med hjälp av WebElement List. Se skärmdumpen nedan för att förstå de element jag pratar om.
I bilden ovan ser vi att de olika tjänsteleverantörerna tillhör en oordnad lista. Således kan verifiering av klickbarhet och synlighet av dessa element göras med en enda kod med hjälp av en lista med element.
Importförklaring
För att kunna använda en WebElement-lista i våra testskript måste vi importera paketet med följande syntax:
importera java.util.List;
Exempelkod
// 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 finns olika krav enligt vilka listorna kan användas för att verifiera elementen med lämpliga implementeringsändringar.
Hantering av tangentbord och mushändelser
Hantering av tangentbordshändelser
Som också sagt tidigare finns det ett antal sätt att hantera samma problemangivelse i olika sammanhang.
Ibland uppstår således en nödvändighet för att hantera ett problem genom att ändra den konventionella affärsstrategin med en mer avancerad strategi. Jag har bevittnat fall där jag inte kunde hantera varningar och dyka upp med selenkommandon, så jag var tvungen att välja olika Java-verktyg för att hantera det med tangentbordsslag och mushändelser.
Robotklass är ett sådant alternativ för att utföra tangentbordshändelser och mushändelser.
Låt oss förstå konceptet med hjälp av ett scenario och dess implementering.
Scenario:
Låt oss samla en situation där en onödig popup dyker upp på skärmen som inte kan accepteras eller avvisas med hjälp av Alert Interface, så det enda kloka alternativet vi har kvar är att stänga fönstret med kortkommandon - 'Alt + mellanslag + C' . Låt oss se hur vi stänger popup-fönstret med Robot Class.
Innan vi påbörjar implementeringen bör vi importera det nödvändiga paketet för att kunna använda robotklassen i vårt testskript.
Importförklaring
importera java.awt.Robot;
Exempelkod
// 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);
Robotklass kan också användas för att hantera mushändelser men låt oss här titta på selenens möjligheter att hantera mushändelser.
Hantering av mushändelser
WebDriver erbjuder ett brett utbud av interaktionsverktyg som användaren kan utnyttja för att automatisera mus- och tangentbordshändelser. Action Interface är ett sådant verktyg som simulerar interaktioner med enstaka användare.
Således skulle vi bevittna Action Interface för att hålla musen på en rullgardinsmeny som sedan öppnar en lista med alternativ i nästa scenario.
Scenario:
- Håll muspekaren på rullgardinsmenyn
- Klicka på ett av objekten i listalternativen
Importförklaring
importera org.openqa.selenium.interactions.Actions;
Exempelkod
maven intervju frågor och svar för erfarna
// 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();
Slutsats
I denna handledning diskuterade vi några avancerade ämnen relaterade till effektiv skriptning och felsökning av scenarier där användaren måste hantera mus- och tangentbordshändelser. Vi diskuterade också hur man lagrar mer än ett webbelement i en lista. Jag hoppas att du skulle kunna felsöka dessa hinder om du stöter på det.
Nästa handledning # 28 : För den kommande handboken i serien skulle vi diskutera begreppet databastestning med Selenium WebDriver . Vi skulle bevittna mekanismen för databasanslutning, träffa selenfrågor och hämta resultaten via Selenium WebDriver Code.
Rekommenderad läsning
- Introduktion till Selen WebDriver - Selen Tutorial # 8
- Felsökning av selenskript med loggar (Log4j-handledning) - Selen-handledning # 26
- 30+ bästa selen-självstudier: Lär dig selen med riktiga exempel
- Gurkselen-handledning: Gurka Java Selen WebDriver-integration
- Hur man hittar element i Chrome- och IE-webbläsare för att bygga selen-skript - Selen-handledning # 7
- Implementation of Our First WebDriver Script - Selenium WebDriver Tutorial # 10
- WebDriver Hela installationen och installationen med Eclipse - Selen Tutorial # 9
- Skapa generik och testdräkter - Selen Tutorial # 22