WebElement în Selenium
WebElement în Selenium
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ă accesăm aceste diferite elemente de formular folosind Selenium Driver web cu Java. Selenium încapsulează fiecare element de formular ca obiect al WebElement. Oferă API pentru a găsi elementele și a lua măsuri asupra lor, cum ar fi introducerea de text în casete de text, clic pe butoane etc. Vom vedea metodele disponibile pentru a accesa fiecare element de formular.
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 de formular pe baza diferitelor proprietăți ale elementelor Web, cum ar fi ID, Name, Class, XPath, Tagname, CSS Selectors, link Text 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 un WebElement Selenium obiect.
- 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 tutorialele ulterioare.
Pas 1) Trebuie să importăm acest pachet pentru a crea obiecte ale Web Elements
Pas 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.
Selenium Introdu textul
Casetele de introducere se referă la oricare dintre aceste două tipuri:
- Câmpuri de text- Selenium introduceți casete de text care acceptă valori introduse ș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() preia un parametru care este un localizator pentru element. Diferiți localizatori precum By.id(), By.name(), By.xpath(), By.CSSSelector() etc. localizează elementele din pagină folosind proprietățile lor precum „““ id, nume sau cale etc.
Puteți folosi pluginuri precum Fire path pentru a obține ajutor pentru obținerea id-ului, xpath-ului etc. al elementelor.
Folosind site-ul exemplu https://demo.guru99.com/test/login.html Mai jos este codul pentru a localiza câmpul de text „Adresă de e-mail” folosind locatorul de id și câmpul „Parolă” folosind locatorul de nume.
- Câmpul de text pentru e-mail este localizat după Id
- Câmpul pentru parolă este localizat după nume
trimite cheile în Selenium
sendkeys() în Selenium este o metodă folosită pentru a introduce conținut editabil în câmpurile de text și parolă în timpul execuției testului. Aceste câmpuri sunt identificate folosind locatori precum nume, clasă, id, etc. Este o metodă disponibilă pe elementul web. Spre deosebire de metoda type, metoda sendkeys() nu înlocuiește textul existent în nicio casetă de text.
Cum să introduceți text în Selenium
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 https://demo.guru99.com/test/login.html site, iată cum găsim câmpurile Text și câmpurile Parolă și introducem text Selenium.
- Găsiți câmpul de text „Adresă de e-mail” utilizând identificatorul de identificare.
- Găsiți câmpul „Parolă” folosind locatorul de nume
- Introduceți text în „Adresa de e-mail” folosind Selenium metoda sendkeys.
- Introduceți o parolă în câmpul „Parolă” folosind metoda sendKeys().
Ștergerea valorilor din intrare Boxes
clar() metoda este folosită pentru a șterge textul dintr-o casetă de introducere. Această metodă nu necesită un parametru. Fragmentul de cod de mai jos va șterge textul din câmpurile E-mail sau Parolă
Selenium Faceți clic pe Butoane
Selenium butonul click poate fi accesat folosind metoda click().
În exemplul de mai sus
- Găsiți butonul pentru a vă conecta
- Faceți clic pe butonul „Conectare” din pagina de conectare a site-ului pentru a vă conecta la site.
Selenium Butoane de trimitere
Butoanele de trimitere sunt folosite pentru a trimite întregul formular către server. Putem fie să folosim metoda clic () pe elementul web ca un buton normal, așa cum am făcut mai sus, fie să folosim metoda de trimitere () pe orice element web din formular sau pe butonul de trimitere în sine.
Când este utilizat submit(), WebDriver va căuta în DOM pentru a ști căreia îi aparține elementul, apoi va declanșa funcția de trimitere.
Cod complet
Iată codul de lucru complet
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.*; public class Form { public static void main(String[] args) { // declaration and instantiation of objects/variables System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); String baseUrl = "https://demo.guru99.com/test/login.html"; driver.get(baseUrl); // Get the WebElement corresponding to the Email Address(TextField) WebElement email = driver.findElement(By.id("email")); // Get the WebElement corresponding to the Password Field WebElement password = driver.findElement(By.name("passwd")); email.sendKeys("abcd@gmail.com"); password.sendKeys("abcdefghlkjl"); System.out.println("Text Field Set"); // Deleting values in the text box email.clear(); password.clear(); System.out.println("Text Field Cleared"); // Find the submit button WebElement login = driver.findElement(By.id("SubmitLogin")); // Using click method to submit form email.sendKeys("abcd@gmail.com"); password.sendKeys("abcdefghlkjl"); login.click(); System.out.println("Login Done with Click"); //using submit method to submit the form. Submit used on password field driver.get(baseUrl); driver.findElement(By.id("email")).sendKeys("abcd@gmail.com"); driver.findElement(By.name("passwd")).sendKeys("abcdefghlkjl"); driver.findElement(By.id("SubmitLogin")).submit(); System.out.println("Login Done with Submit"); //driver.close(); } }
Depanare
Dacă întâlniți NoSuchElementException() în timp ce găsiți elemente, înseamnă că elementul nu este găsit în pagină în punctul în care driverul Web a accesat pagina.
- Verificați din nou locatorul 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 descoperiți că valoarea este diferită și se schimbă dinamic, luați în considerare utilizarea By.xpath() sau By.cssSelector(), care sunt moduri mai fiabile, dar mai complexe.
- Uneori, ar putea fi și o problemă de așteptare, adică driverul web a executat codul chiar înainte ca pagina să se încarce 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 a accesa fiecare tip de element discutat mai sus
Element | Comandă | Descriere |
---|---|---|
Intrare Box | sendKeys() | folosit pentru a introduce valori în casetele de text |
clar() | folosit pentru a șterge casetele de text din valoarea sa curentă | |
Link-uri | clic() | folosit pentru a face clic pe link și a aștepta finalizarea încărcării paginii înainte de a trece la următoarea comandă. |
trimiteţi butonul | Trimite() |
- WebDriver permite selectarea mai multor opțiuni într-un element SELECT multiplu.
- Puteți folosi metoda submit() pe orice element din formular. WebDriver va declanșa automat funcția de trimitere a formularului din care aparține acel element.