Formularele sunt elementele web fundamentale pentru a primi informații de la vizitatorii site-ului. Formularele web au diferite elemente GUI, cum ar fi casete de text, câmpuri de parolă, casete de selectare, butoane radio, meniuri derulante, intrări de fișiere etc.
Vom vedea cum să accesați aceste diferite elemente de formular folosind Selenium Web Driver cu Java. Seleniul încapsulează fiecare element al formularului ca obiect al WebElement. Acesta oferă API pentru a găsi elementele și a lua măsuri asupra acestora, cum ar fi introducerea textului în casetele de text, clic pe butoane etc. Vom vedea metodele disponibile pentru a accesa fiecare element de formular.
În acest tutorial, vom vedea cum să identificăm următoarele elemente de formular
- Introducere în WebElement, findElement (), findElements ()
- Casetă de intrare
- Introducerea valorilor în casetele de intrare
- Ștergerea valorilor din casetele de intrare
- Butoane
- Trimiteți butoane
- Cod complet
- Depanare
Introducere în WebElement, findElement (), findElements ()
Selenium Web Driver încapsulează un element de formular simplu ca obiect al WebElement.
Există diverse tehnici prin care WebDriver identifică elementele formularului pe baza diferitelor proprietăți ale elementelor Web cum ar fi ID, Nume, Clasă, XPath, Tagname, Selectoare CSS, Text de legătură etc.
Web Driver oferă următoarele două metode WebElement pentru a găsi elementele.
- findElement () - găsește un singur element web și revine ca obiect WebElement Selenium.
- findElements () - returnează o listă de obiecte WebElement care corespund criteriilor de localizare.
Să vedem fragmentele de cod pentru a obține un singur element - Câmp text într-o pagină web ca obiect al WebElement folosind metoda findElement (). Vom acoperi metoda findElements () de a găsi mai multe elemente în tutoriale ulterioare.
Pasul 1: Trebuie să importăm acest pachet pentru a crea obiecte Web Elements
Pasul 2: trebuie să apelăm metoda findElement () disponibilă în clasa WebDriver și să obținem un obiect WebElement.
Consultați mai jos pentru a vedea cum se face.
Casetă de intrare
Casetele de intrare se referă la oricare dintre aceste două tipuri:
- Câmpuri de text - Casete de text de introducere a seleniului care acceptă valorile tastate și le arată așa cum sunt.
- Câmpuri de parolă - casete de text care acceptă valori tastate, dar le maschează ca o serie de caractere speciale (de obicei puncte și asteriscuri) pentru a evita afișarea valorilor sensibile.
Localizatori
Metoda findElement () ia un parametru care este un localizator al elementului. Diferiti localizatori cum ar fi By.id (), By.name (), By.xpath (), By.CSSSelector () etc. localizează elementele din pagină folosind proprietățile lor cum ar fi "" "" id, nume sau cale, etc.
Puteți utiliza pluginuri precum Fire path pentru a obține ajutor cu obținerea id-ului, xpath etc. a elementelor.
Folosind exemplul site-ului http://demo.guru99.com/test/login.html dat mai jos este codul pentru localizarea câmpului de text „Adresă de e-mail” folosind identificatorul de identificare și câmpul „Parolă” folosind localizatorul de nume.
- Câmpul text de e-mail este localizat după Id
- Câmpul de parolă este localizat după nume
sendkeys în seleniu
sendkeys () în Selenium este o metodă utilizată pentru a introduce conținut modificabil în câmpurile text și parolă în timpul executării testului. Aceste câmpuri sunt identificate folosind localizatori precum nume, clasă, id etc. Este o metodă disponibilă pe elementul web. Spre deosebire de metoda de tip, metoda sendkeys () nu înlocuiește textul existent în nicio casetă de text.
Introducerea valorilor în casetele de intrare
Pentru a introduce text în câmpurile de text și câmpurile de parolă, sendKeys () este metoda disponibilă pe WebElement în Selenium.
Folosind același exemplu de site http://demo.guru99.com/test/login.html, iată cum găsim câmpul Text și câmpurile Parolă și introducem text în Selenium.
- Găsiți câmpul de text „Adresă de e-mail” utilizând identificatorul de identificare.
- Găsiți câmpul „Parolă” folosind localizatorul de nume
- Introduceți text în „Adresa de e-mail” folosind metoda Selenium sendkeys.
- Introduceți o parolă în câmpul „Parolă” utilizând metoda sendKeys ().
Ștergerea valorilor din casetele de intrare
Metoda clear () este utilizată pentru a șterge textul dintr-o casetă de introducere. Această metodă nu are nevoie de un parametru . Fragmentul de cod de mai jos va șterge textul din câmpurile E-mail sau Parolă
Butoane
Butonul de clic Selenium poate fi accesat folosind metoda click ().
În exemplul de mai sus
- Găsiți butonul pentru conectare
- Faceți clic pe butonul „Conectare” din pagina de autentificare a site-ului pentru a vă autentifica pe site.
Trimiteți butoane
Butoanele de trimitere sunt folosite pentru a trimite întregul formular către server. Putem folosi metoda click () pe elementul web ca un buton normal așa cum am făcut mai sus sau putem folosi metoda submit () pe orice element web din formular sau pe butonul de trimitere în sine.
Când se utilizează submit (), WebDriver va căuta DOM-ul pentru a ști la care formă aparține elementul și apoi va declanșa funcția de trimitere.
Cod complet
Iată codul complet de lucru
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium. *;formular de clasă publică {public static main main (String [] args) {// declararea și instanțierea obiectelor / variabilelorSystem.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");Driver WebDriver = nou ChromeDriver ();String baseUrl = "http://demo.guru99.com/test/login.html";driver.get (baseUrl);// Obțineți WebElement corespunzător adresei de e-mail (TextField)WebElement e-mail = driver.findElement (By.id ("e-mail"));// Obțineți WebElement corespunzător câmpului ParolăParola WebElement = driver.findElement (By.name ("passwd"));email.sendKeys (" Această adresă de e-mail este protejată de spamboți. Aveți nevoie de JavaScript activat pentru ao vizualiza.");password.sendKeys ("abcdefghlkjl");System.out.println ("Set câmp text");// Ștergerea valorilor din caseta de textemail.clear ();password.clear ();System.out.println („Câmp text eliminat”);// Găsiți butonul de trimitereWebElement login = driver.findElement (By.id ("SubmitLogin"));// Folosind metoda clic pentru a trimite formularulemail.sendKeys (" Această adresă de e-mail este protejată de spamboți. Aveți nevoie de JavaScript activat pentru ao vizualiza."); password.sendKeys ("abcdefghlkjl"); login.click (); System.out.println („Conectare realizată cu clic”); // folosind metoda de trimitere pentru a trimite formularul. Trimiteți utilizat în câmpul de parolă driver.get (baseUrl); driver.findElement (By.id ("e-mail")). sendKeys (" Această adresă de e-mail este protejată de spamboți. Aveți nevoie de JavaScript activat pentru ao vizualiza."); driver.findElement (By.name ("passwd")). sendKeys ("abcdefghlkjl"); driver.findElement (By.id ("SubmitLogin")). submit (); System.out.println („Conectare finalizată cu trimitere”); //driver.close (); }}
Depanare
Dacă întâlniți NoSuchElementException () în timp ce găsiți elemente, înseamnă că elementul nu se găsește în pagină în punctul în care driverul Web a accesat pagina.
- Verificați din nou localizatorul dvs. folosind Firepath sau Inspect Element în Chrome.
- Verificați dacă valoarea pe care ați folosit-o în cod este diferită de cea pentru elementul din Firepath acum.
- Unele proprietăți sunt dinamice pentru câteva elemente. În cazul în care constatați că valoarea este diferită și se schimbă dinamic, luați în considerare utilizarea By.xpath () sau By.cssSelector (), care sunt modalități mai fiabile, dar mai complexe.
- Uneori, ar putea fi și o problemă de așteptare, adică driverul Web a executat codul dvs. chiar înainte ca pagina să fie încărcată complet etc.
- Adăugați o așteptare înainte de findElement () folosind așteptări implicite sau explicite.
rezumat
- Tabelul de mai jos rezumă comenzile pentru accesarea fiecărui tip de element discutat mai sus
Element | Comanda | Descriere |
---|---|---|
Casetă de intrare | sendKeys () | folosit pentru a introduce valori în casetele de text |
clar() | folosit pentru a șterge casetele de text de valoarea sa actuală | |
Link-uri | clic() | folosit pentru a face clic pe link și așteptați încărcarea paginii înainte de a trece la următoarea comandă. |
Buton de trimitere | Trimite() |
- WebDriver permite selectarea mai multor opțiuni într-un element SELECT multiplu.
- Puteți utiliza metoda submit () pe orice element din formular. WebDriver va declanșa automat funcția de trimitere a formularului la care aparține acel element.