efficient selenium scripting
În tutorialul anterior, am discutat despre implicațiile tehnice în timp ce implementați logarea într-un cadru . Am discutat utilitar log4j pe larg. Am discutat despre componentele de bază care constituie log4j dintr-o perspectivă de utilizare. Cu anexele și aspectele, un utilizator este folosit pentru a alege formatul / modelul de înregistrare dorit și sursa de date / locația.
În actualul 27 tutorial în acest serie cuprinzătoare de antrenament online cu seleniu gratuit , ne-am îndrepta atenția către câteva banale totuși subiecte importante care ne-ar ghida să depanăm unele probleme recurente. Este posibil să le folosim sau nu în scriptarea zilnică, dar acestea ar fi utile pe termen lung.
Ne-ar discutați câteva concepte avansate în care ne-am ocupa de evenimente de la mouse și tastatură, accesând mai multe linkuri prin implementarea listelor . Așadar, de ce să nu începem și să discutăm pe scurt aceste subiecte cu ajutorul unor scenarii și fragmente de cod adecvate.
java vs. c ++
Ce veți învăța:
- Executori JavaScript
- Accesarea mai multor elemente dintr-o Listă
- Gestionarea evenimentelor de la tastatură și mouse
- Concluzie
- Lectură recomandată
Executori JavaScript
În timp ce automatizați un scenariu de testare, există anumite acțiuni care devin o parte inerentă a scripturilor de testare.
Aceste acțiuni pot fi:
- Dând clic pe un buton, hyperlink etc.
- Tastarea într-o casetă de text
- Defilare verticală sau orizontală până când obiectul dorit este afișat
- Și mult mai mult
Acum, este evident din tutorialele anterioare că cel mai bun mod de a automatiza astfel de acțiuni este prin utilizarea comenzilor Selenium.
Dar dacă comenzile de seleniu nu funcționează?
Da, este absolut posibil ca comenzile de bază și elementare ale seleniului să nu funcționeze în anumite situații.
Acestea fiind spuse, pentru a putea depana o astfel de situație, îi punem pe executori JavaScript.
Ce sunt executanții JavaScript?
Interfața JavascriptExecutor face parte din org.openqa.selenium și implementează clasa java.lang.Object. JavascriptExecutor prezintă capacitățile de a executa JavaScript direct în browserul web. Pentru a putea executa JavaScript, sunt implementate anumite mecanisme sub formă de metode împreună cu un set specific de parametri.
Metode
executeScript (Script șir, argumente)
După cum sugerează numele metodei, execută JavaScript în fereastra curentă, alertă, cadru etc. (fereastra pe care se concentrează în prezent instanța WebDriver)
executeAsyncScript (Script șir, argumente)
După cum sugerează numele metodei, execută JavaScript în fereastra curentă, alertă, cadru etc. (fereastra pe care se concentrează în prezent instanța WebDriver)
Parametrii și declarația de import sunt comune ambelor metode de executare.
cel mai bun downloader gratuit de muzică pentru Android
Parametrii
Script - scriptul care trebuie executat
Argument - parametrii necesari scriptului pentru executarea acestuia (dacă există)
Declarație de import
Pentru a putea folosi JavascriptExecutors în scripturile noastre de testare, trebuie să importăm pachetul folosind următoarea sintaxă:
import org.openqa.selenium.JavascriptExecutor;
Cod simplu
# 1) Faceți clic pe un element web
// 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) Tastarea într-o casetă de text
// Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Typing the test data into Textbox js.executeScript('document.getElementById(‘id of the element’).value=’test data’;”);
# 3) Derulând în jos până când elementul web este în vizualizare
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);
Puteți găsi diverse alte modalități de scriere a codului pentru accesarea JavascriptExecutors.
Accesarea mai multor elemente dintr-o Listă
Uneori, putem întâlni elemente de același tip, cum ar fi mai multe hyperlinkuri, imagini etc., aranjate într-o listă ordonată sau neordonată. Astfel, este absolut logic să se ocupe de astfel de elemente printr-o singură bucată de cod și acest lucru se poate face folosind Lista WebElement. Consultați captura de ecran de mai jos pentru a înțelege elementele despre care vorbesc.
În imaginea de mai sus, vedem că diferiții furnizori de servicii aparțin unei liste neordonate. Astfel, verificarea clicabilității și a vizibilității acestor elemente se poate face printr-o singură bucată de cod, utilizând o listă de elemente.
Declarație de import
Pentru a putea utiliza o listă WebElement în scripturile noastre de testare, trebuie să importăm pachetul folosind următoarea sintaxă:
import java.util.List;
Cod simplu
// 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; iExistă diferite cerințe în baza cărora listele pot fi utilizate pentru a verifica elementele cu modificări adecvate de implementare.
Gestionarea evenimentelor de la tastatură și mouse
Gestionarea evenimentelor de la tastatură
Așa cum am spus mai devreme, există n un număr de moduri de a face față aceleiași afirmații de problemă în contexte diferite.
Astfel, uneori apare necesitatea de a rezolva o problemă prin schimbarea strategiei convenționale de tranzacționare cu o strategie mai avansată. Am asistat la cazuri în care nu am putut face față alertelor și a pop-up etc. prin comenzi seleniu, așa că a trebuit să optez pentru diferite utilitare java pentru a le rezolva folosind lovituri de tastatură și evenimente de mouse.
Clasa robot este o astfel de opțiune pentru a efectua evenimente de la tastatură și evenimente de mouse.
Să înțelegem conceptul cu ajutorul unui scenariu și implementarea acestuia.
Scenariu:
Să adunăm o situație în care apare pe ecran o fereastră pop-up inutilă care nu poate fi acceptată sau respinsă folosind Alert Interface, astfel singura opțiune înțeleaptă care ne-a rămas este să închidem fereastra folosind tastele de comandă rapidă - „Alt + bara de spațiu + C” . Să vedem cum închidem fereastra pop-up folosind Robot Class.
Înainte de a iniția implementarea, ar trebui să importăm pachetul necesar pentru a putea folosi clasa Robot în scriptul nostru de testare.
Declarație de import
import java.awt.Robot;
Cod simplu
// 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);
Clasa de roboți poate fi utilizată și pentru gestionarea evenimentelor de la mouse, dar să ne uităm aici la capacitățile seleniului de a gestiona evenimentele de la mouse.
Gestionarea evenimentelor mouse-ului
WebDriver oferă o gamă largă de utilități de interacțiune pe care utilizatorul le poate exploata pentru a automatiza evenimentele de la mouse și tastatură. Action Interface este un astfel de utilitar care simulează interacțiunile unui singur utilizator.
Astfel, vom fi martori la Interfața de acțiune pentru a trece cu mouse-ul pe o listă verticală care apoi deschide o listă de opțiuni în următorul scenariu.
Scenariu:
- Plasați mouse-ul pe meniul derulant
- Faceți clic pe unul dintre elementele din opțiunile listei
Declarație de import
import org.openqa.selenium.interactions.Actions;
Cod simplu
cel mai bun software pentru comprimarea fișierelor video
// 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();
Concluzie
În acest tutorial, am discutat câteva subiecte avansate legate de scriptarea eficientă și pentru depanarea scenariilor în care utilizatorul este obligat să gestioneze evenimentele de la mouse și tastatură. De asemenea, am discutat despre modul de stocare a mai multor elemente web într-o listă. Sper că veți fi capabili să depanați aceste impedimente dacă vă veți întâlni.
Următorul tutorial nr. 28 : Pentru viitorul tutorial din serie, am discuta despre concept de testare a bazei de date folosind Selenium WebDriver . Am fi martori la mecanismul de conectare la baza de date, lovind interogări cu seleniu și preluând rezultatele prin Codul Selenium WebDriver.
Lectură recomandată
- Introducere în Selenium WebDriver - Tutorial Selenium # 8
- Depanarea scripturilor Selenium cu jurnale (Tutorial Log4j) - Tutorial Selenium # 26
- 30+ Cele mai bune tutoriale despre seleniu: învățați seleniul cu exemple reale
- Tutorial Castravete Seleniu: Integrare Castravete Java Seleniu WebDriver
- Cum să localizați elemente în browserele Chrome și IE pentru crearea de scripturi Selenium - Tutorial Selenium # 7
- Implementarea primului nostru script WebDriver - Selenium WebDriver Tutorial # 10
- WebDriver Întreg instalare și instalare cu Eclipse - Selenium Tutorial # 9
- Crearea de generice și teste - Tutorial Selenium # 22