Selenium Webdriver Java Exemplu de program

⚡ Rezumat inteligent

Selenium webdriver Java Exemplul de program vă prezintă primul script de automatizare complet. LessAcoperă configurarea mediului, localizarea elementelor, trimiterea intrării, navigarea, validarea, așteptările, gestionarea excepțiilor și cele mai bune practici pentru teste WebDriver fiabile.

  • ⚙️ Configurarea mediului: Instalare Java, Eclipse sau IntelliJ, configurați Selenium biblioteci și alegeți fișierul binar al driverului potrivit pentru versiunea browserului dvs.
  • 🧭 Localizatori de elemente: Folosește ID, name, class, XPath, selectorul CSS și linkText pentru a identifica elementele în mod stabil în diferite browsere și versiuni.
  • ⌨️ Acțiuni și intrări: WebDriver acceptă funcții precum click, sendKeys, submit, select dropdowns și evenimente de la tastatură pentru o interacțiune completă în stil utilizator.
  • ⏳ Așteptări inteligente: Înlocuiți Thread.sleep cu așteptări implicite, explicite și fluente, determinate de ExpectedConditions, pentru a elimina testele instabile.
  • ???? Gestionarea excepțiilor: Prinde NoSuchElementException, TimeoutException și StaleElementReferenceException pentru a menține reziliența suitelor de automatizare.
  • 🤖 Generarea de teste AI: Asistenții inteligenți artificiali generează scripturi WebDriver standard, sugerează localizatori și corectează automat selectorii atunci când DOM-ul se modifică.

Selenium webdriver Java Program

Selenium Java Exemplu

Utilizarea Java clasa „myclass” pe care am creat-o în tutorialul anterior, să încercăm să creăm un script WebDriver care ar:

Pasul 1: aduc Mercury Pagina de pornire a Tours
Pasul 2: verifica titlul acestuia
Pasul 3: tipăriți rezultatul comparației
Pasul 4: închideți-l înainte de a încheia întregul program.

Selenium Exemplu de driver web Code

Mai jos este codul WebDriver real pentru logica prezentată de scenariul de mai sus

package newproject;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
//comment the above line and uncomment below line to use Chrome
//import org.openqa.selenium.chrome.ChromeDriver;
public class PG1 {


    public static void main(String[] args) {
        // declaration and instantiation of objects/variables
    	System.setProperty("webdriver.gecko.">driver","C:\\geckodriver.exe");
		WebDriver driver = new FirefoxDriver();
		//comment the above 2 lines and uncomment below 2 lines to use Chrome
		//System.setProperty("webdriver.chrome.">driver","G:\\chromedriver.exe");
		//WebDriver driver = new ChromeDriver();
    	
        String baseUrl = "https://demo.guru99.com/test/newtours/";
        String expectedTitle = "Welcome: Mercury Tours";
        String actualTitle = "";

        // launch Fire fox and direct it to the Base URL
        driver.get(baseUrl);

        // get the actual value of the title
        actualTitle = driver.getTitle();

        /*
         * compare the actual title of the page with the expected one and print
         * the result as "Passed" or "Failed"
         */
        if (actualTitle.contentEquals(expectedTitle)){
            System.out.println("Test Passed!");
        } else {
            System.out.println("Test Failed");
        }
       
        //close Fire fox
        driver.close();
    }

}

Notă: Începe Firefox 35, trebuie să utilizați driverul gecko creat de Mozilla pentru a utiliza Web Driver. Selenium 3.0, gecko și firefox au probleme de compatibilitate și setarea lor corectă ar putea deveni o sarcină dificilă. Dacă codul nu funcționează, faceți downgrade la Firefox versiunea 47 sau mai jos. Alternativ, puteți rula scripturile pe Chrome. Selenium funcționează imediat pentru Chrome. Trebuie doar să schimbați 3 linii de cod pentru ca scriptul să funcționeze cu Chrome sau Firefox

Explicarea codului

Importul pachetelor

Pentru a începe, trebuie să importați următoarele două pachete:

  1. org.openqa.selenium.*– conține clasa WebDriver necesară pentru a instanția un nou browser încărcat cu un anumit driver
  2. org.openqa.selenium.firefox.FirefoxŞofer – conține FirefoxClasa de șoferi necesară pentru a instanția a Firefox- driver specific pe browser instanțiat de clasa WebDriver

Dacă testul dvs. necesită acțiuni mai complicate, cum ar fi accesarea unei alte clase, realizarea de capturi de ecran de browser sau manipularea fișierelor externe, cu siguranță va trebui să importați mai multe pachete.

Instanțierea obiectelor și variabilelor

În mod normal, așa este instanțiat un obiect driver.

WebDriver driver = new FirefoxDriver();

A FirefoxClasa de șofer fără parametri înseamnă că implicit Firefox profilul va fi lansat de către nostru Java program. Implicit Firefox profilul este similar cu lansarea Firefox în modul sigur (nu sunt încărcate extensii).

Pentru comoditate, am salvat Baza URL și titlul așteptat ca variabile.

Lansarea unei sesiuni de browser

WebDriver-uri obține() Metoda este utilizată pentru a lansa o nouă sesiune de browser și o direcționează către URL pe care îl specificați ca parametru.

driver.get(baseUrl);

Obțineți titlul real al paginii

Clasa WebDriver are getTitle() metodă care este întotdeauna folosită pentru a obține titlul paginii încărcate curent.

actualTitle = driver.getTitle();

Comparați valorile așteptate și reale

Această porțiune a codului folosește pur și simplu un element de bază Java structură if-else pentru a compara titlul real cu cel așteptat.

if (actualTitle.contentEquals(expectedTitle)){
            System.out.println("Test Passed!");
        } else {
            System.out.println("Test Failed");
        }

Încheierea unei sesiuni de browser

"închide()” este folosită pentru a închide fereastra browserului.

driver.close();

Încheierea întregului program

Dacă utilizați această comandă fără a închide mai întâi toate ferestrele browserului, întregul dvs Java programul se va încheia în timp ce lasă fereastra browserului deschisă.

System.exit(0);

Executarea testului

Există două moduri de a executa codul în Eclipse SDI.

  1. On Eclipsebara de meniu a lui, dați clic Run > Run.
  2. Anunturi Ctrl + F11 pentru a rula întregul cod.

Executarea testului

Dacă ai făcut totul corect, Eclipse ar scoate „Test trecut!”

Executarea testului

Localizarea elementelor GUI

Localizarea elementelor în WebDriver se face prin utilizarea „findElement(De.Locator())” metoda. Partea „locator” a codului este aceeași cu oricare dintre locatorii discutați anterior în Selenium IDE capitole din aceste tutoriale. De fapt, se recomandă să localizați elementele GUI folosind IDE și, odată identificate cu succes, să exportați codul în WebDriver.

Aici este o Selenium exemplu de cod care localizează un element după ID-ul său. Facebook este folosit ca element de bază URL.

package newproject;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class PG2 {
    public static void main(String[] args) {
    	System.setProperty("webdriver.gecko.">driver","C:\\geckodriver.exe");
    	WebDriver driver = new FirefoxDriver();
        String baseUrl = "http://www.facebook.com";
        String tagName = "";
        
        driver.get(baseUrl);
        tagName = driver.findElement(By.id("email")).getTagName();
        System.out.println(tagName);
        driver.close();
        System.exit(0);
}
}

Am folosit getTagName() metodă de a extracnumele etichetei elementului respectiv al cărui ID este „email”. Când este rulat, acest cod ar trebui să poată identifica corect numele etichetei „input” și îl va afișa pe Eclipsefereastra Consolei lui.

Localizarea elementelor GUI

Rezumat pentru localizarea elementelor

Variație Descriere Eşantion
După.className găsește elemente pe baza valorii atributului „clasă”. findElement(By.className(„someClassName”))
De.cssSelector găsește elemente pe baza motorului CSS Selector al driverului findElement(By.cssSelector(„input#email”))
Prin.id localizează elementele după valoarea atributului lor „id”. findElement(By.id(„someId”))
 
Prin.linkText găsește un element de legătură după textul exact pe care îl afișează findElement(By.linkText(„ÎNREGISTRARE”))
 
Dupa nume localizează elemente după valoarea atributului „nume”. findElement(După.nume(„uneleNume”))
 
De.partialLinkText localizează elementele care conțin textul link-ului dat findElement(By.partialLinkText(„REG”))
 
By.tagName localizează elementele după numele etichetei lor findElement(By.tagName(„div”))
 
Prin.xpath localizează elemente prin XPath findElement(By.xpath(“//html/body/div/table/tbody/tr/td[2]/table/
tbody/tr[4]/td/table/tbody/tr/td[2]/table/tbody/tr[2]/td[3]/ form/table/tbody/tr[5]”))

Notă despre utilizarea findElement(By.cssSelector())

By.cssSelector() nu acceptă funcția „conține”. Considera Selenium Codul IDE de mai jos -

Notă despre utilizarea findElement(By.cssSelector())

In Selenium IDE de mai sus, întregul test a trecut. Cu toate acestea, în Selenium Scriptul WebDriver de mai jos, același test a generat o eroare, deoarece WebDriver nu acceptă cuvântul cheie „conține” atunci când este utilizat în metoda By.cssSelector().

Notă despre utilizarea findElement(By.cssSelector())

Comenzi comune

Instanțierea elementelor web

În loc să folosim sintaxa lungă „driver.findElement(By.locator())” de fiecare dată când veți accesa un anumit element, putem instanția un obiect WebElement pentru acesta. Clasa WebElement este conținută în pachetul „org.openqa.selenium.*”.

Instanțierea elementelor web

Făcând clic pe un element

Făcând clic este poate cel mai comun mod de a interacționa cu elementele web. The click() metoda este folosită pentru a simula clicul oricărui element. Următoarele Selenium Java exemplu arată cum click() a fost folosit pentru a da clic pe Mercury Butonul „Conectare” al Tururilor.

Făcând clic pe un element

Următoarele lucruri trebuie remarcate atunci când utilizați metoda click().

  • Nu ia niciun parametru/argument.
  • Metoda așteaptă automat încărcarea unei noi pagini, dacă este cazul.
  • Elementul pe care se face clic trebuie să fie vizibil (înălțimea și lățimea nu trebuie să fie egale cu zero).

Obțineți comenzi

Comenzile Get preia diverse informații importante despre pagină/element. Iată câteva comenzi importante „obține” cu care trebuie să fii familiarizat.

Comenzi Folosire
obține()

Exemplu de utilizare:

  • Deschide automat o nouă fereastră de browser și preia pagina pe care o specificați în paranteze.
  • Este omologul lui Selenium Comanda „deschidere” a IDE.
  • Parametrul trebuie să fie a Şir obiect.
getTitle()

Exemplu de utilizare:

  • Nu are nevoie de parametri
  • Preia titlul paginii curente
  • Spațiile albe de început și de final sunt tăiate
  • Returnează un șir nul dacă pagina nu are titlu
getPageSource()

Exemplu de utilizare:

  • Nu are nevoie de parametri
  • Returnează codul sursă al paginii ca valoare String
getCurrentUrl()

Exemplu de utilizare:

  • Nu are nevoie de parametri
  • Preia șirul de caractere care reprezintă curentul URL pe care browserul o privește
getText ()

Exemplu de utilizare:

  • Preia textul interior al elementului pe care îl specificați

Navigați comenzi

Aceste comenzi vă permit să reîmprospătați, să accesați și să comutați înainte și înapoi între diferite pagini web.

navigheaza catre()

Exemplu de utilizare:

  • Deschide automat o nouă fereastră de browser și preia pagina pe care o specificați în paranteze.
  • Face exact același lucru ca și get() metodă.
navigate().refresh()

Exemplu de utilizare:

  • Nu are nevoie de parametri.
  • Reîmprospătează pagina curentă.
navigate().back()

Exemplu de utilizare:

  • Nu are nevoie de parametri
  • Vă duce înapoi cu o pagină din istoricul browserului.
navigate().forward()

Exemplu de utilizare:

  • Nu are nevoie de parametri
  • Vă duce înainte cu o pagină din istoricul browserului.

Închiderea și închiderea browserului Windows

închide()

Exemplu de utilizare:

  • Nu are nevoie de parametri
  • Închide doar fereastra browserului pe care WebDriver o controlează în prezent.
părăsi()

Exemplu de utilizare:

  • Nu are nevoie de parametri
  • Închide toate ferestrele pe care le-a deschis WebDriver.

Închiderea și închiderea browserului Windows

Pentru a ilustra clar diferența dintre close() și quit(), încercați să executați codul de mai jos. Folosește o pagină web care deschide automat o fereastră la încărcarea paginii și deschide o altă fereastră după ieșire.

Închiderea și închiderea browserului Windows

Observați că numai fereastra browser-ului părinte a fost închisă și nu cele două ferestre pop-up.

Închiderea și închiderea browserului Windows

Dar dacă utilizați quit(), toate ferestrele vor fi închise - nu doar cea părinte. Încercați să rulați codul de mai jos și veți observa că și cele două ferestre pop-up de mai sus se vor închide automat.

package newproject;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class PG3 {
    public static void main(String[] args) {
    	System.setProperty("webdriver.gecko.">driver","C:\\geckodriver.exe");
    	WebDriver driver = new FirefoxDriver();
        driver.get("http://www.popuptest.com/popuptest2.html");
        driver.quit();  // using QUIT all windows will close
    }
}

Comutarea între cadre

Pentru a accesa elementele GUI într-un cadru, ar trebui mai întâi să direcționăm WebDriver să se concentreze pe cadru sau pe fereastra pop-up înainte de a putea accesa elementele din ele. Să luăm, de exemplu, pagina web https://demo.guru99.com/selenium/deprecated.html

Comutarea între cadre

Această pagină are 3 cadre ale căror atribute „nume” sunt indicate mai sus. Dorim să accesăm linkul „Depreciat” înconjurat mai sus cu galben. Pentru a face acest lucru, trebuie mai întâi să îi instruim pe WebDriver să comute la cadrul „classFrame” folosind „switchTo().frame()” metodă. Vom folosi atributul nume al cadrului ca parametru pentru partea „frame()”.

package newproject;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class PG4 {
	  public static void main(String[] args) {
		  	System.setProperty("webdriver.gecko.">driver","C:\\geckodriver.exe");  
		  	WebDriver driver = new FirefoxDriver();
	        driver.get("https://demo.guru99.com/selenium/deprecated.html");
	        driver.switchTo().frame("classFrame");
	        driver.findElement(By.linkText("Deprecated")).click();
	        driver.close(); 
	    }
}

După executarea acestui cod, veți vedea că cadrul „classFrame” este dus la pagina „Deprecated API”, ceea ce înseamnă că codul nostru a reușit să acceseze linkul „Deprecated”.

Comutarea între pop-up Windows

WebDriver permite afișarea ferestrelor pop-up precum alertele, spre deosebire de în Selenium IDE. Pentru a accesa elementele din alertă (cum ar fi mesajul pe care îl conține), trebuie să folosim "switchTo().alert()" metodă. În codul de mai jos, vom folosi această metodă pentru a accesa caseta de alertă și apoi pentru a prelua mesajul acesteia folosind "getText()" metoda, apoi închideți automat caseta de alertă folosind "switchTo().alert().accept()" metodă.

În primul rând, du-te la https://output.jsbin.com/usidix/1 și faceți clic manual pe „Go!” butonul de acolo și vedeți singur textul mesajului.

Comutarea între pop-up Windows

Să vedem Selenium exemplu de cod pentru a face asta -

package mypackage;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class myclass {

    public static void main(String[] args) {
    	System.setProperty("webdriver.gecko.">driver","C:\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();
        String alertMessage = "";

        driver.get("http://jsbin.com/usidix/1");
        driver.findElement(By.cssSelector("input[value=\"Go!\"]")).click();
        alertMessage = driver.switchTo().alert().getText();
        driver.switchTo().alert().accept();
       
        System.out.println(alertMessage);
        driver.quit();
       
    }
}

Pe Eclipse console, observați că mesajul de alertă tipărit este:

Comutarea între pop-up Windows

Așteaptă

Există două tipuri de așteptări.

  1. Așteptare implicită – folosit pentru a seta timpul de așteptare implicit pe tot parcursul programului
  2. Explicit wait – folosit pentru a seta timpul de așteptare numai pentru o anumită instanță

Așteptați implicit

  • Este mai simplu de codat decât Explicit Waits.
  • Este de obicei declarat în partea de instanțiere a codului.
  • Veți avea nevoie de un singur pachet suplimentar pentru a importa.

Pentru a începe să utilizați o așteptare implicită, ar trebui să importați acest pachet în codul dvs.

Așteptați implicit

Apoi, în partea de instanțiere a codului dvs., adăugați aceasta.

Așteptați implicit

Așteptați explicit

Așteptările explicite sunt efectuate folosind clasele WebDriverWait și ExpectedCondition. Pentru urmatoarele Selenium Exemplu WebDriver, vom aștepta până la 10 secunde pentru ca un element al cărui id este „nume de utilizator” să devină vizibil înainte de a trece la următoarea comandă. Iată pașii.

Pasul 1:

Importă aceste două pachete:

Așteptați explicit

Pasul 2:

Declarați o variabilă WebDriverWait. În acest exemplu, vom folosi „myWaitVar” ca nume al variabilei.

Așteptați explicit

Pasul 3:

Utilizați myWaitVar cu ExpectedConditions în porțiunile în care aveți nevoie de așteptarea explicită. În acest caz, vom folosi așteptarea explicită pe „nume de utilizator” (Mercury Turs HomePage) înainte de a introduce textul „tutorial” pe el.

Așteptați explicit

Condiţii

Următoarele metode sunt utilizate în condițional și în tehnica de calculping operațiuni —

  • este activat() este folosit atunci când doriți să verificați dacă un anumit element este activat sau nu înainte de a executa o comandă.

Condițiile sunt activate()

  • este afisat() este folosit atunci când doriți să verificați dacă un anumit element este afișat sau nu înainte de a executa o comandă.

Condițiile sunt afișate()

  • este selectat() este folosit atunci când doriți să verificați dacă un anumit casetă de selectare, buton radio sau opțiune într-o casetă derulantă este selectat. Nu funcționează pe alte elemente.

Condițiile sunt selectate()

Utilizarea ExpectedConditions

Clasa ExpectedConditions oferă un set mai larg de condiții pe care le puteți utiliza împreună cu metoda until() a lui WebDriverWait.

Mai jos sunt câteva dintre cele mai comune metode ExpectedConditions.

  • alertIsPresent() – așteaptă până când este afișată o casetă de alertă.

Utilizarea ExpectedConditions alertIsPresent()

  • elementToBeClickable() – Așteaptă până când un element este vizibil și, în același timp, activat. Proba Selenium Code mai jos se va aștepta până când elementul cu id="username" devine vizibil și activat înainte de a atribui acel element ca variabilă WebElement numită "txtUserName".

Utilizarea ExpectedConditions

  • frameToBeAvailableAndSwitchToIt() – Așteaptă până când cadrul dat este deja disponibil și apoi trece automat la acesta.

Utilizarea ExpectedConditions elementToBeClickable()

Prinderea excepțiilor

Când utilizați isEnabled(), isDisplayed() și isSelected(), WebDriver presupune că elementul există deja pe pagină. În caz contrar, va arunca a NoSuchElementException. Pentru a evita acest lucru, ar trebui să folosim un bloc try-catch, astfel încât programul să nu fie întrerupt.

WebElement txtbox_username = driver.findElement(By.id("username"));
try{
        if(txtbox_username.isEnabled()){
            txtbox_username.sendKeys("tutorial");
        }
    }

catch(NoSuchElementException nsee){
            System.out.println(nsee.toString());
 }

Dacă utilizați așteptări explicite, tipul de excepție pe care ar trebui să-l identificați este „TimeoutException”.

Prinderea excepțiilor

Întrebări frecvente

Instalați JDK, un IDE precum Eclipse sau IntelliJ, cel/cea/cei/cele Selenium Java biblioteci și driverul de browser corespunzător. Construiți instrumente de automatizare precum Maven sau Gradle simplificați gestionarea dependențelor.

Inteligența artificială corectează automat localizatorii, generează cazuri de testare din poveștile utilizatorilor și identifică testele instabile. Platforme precum TestimMabl și Applitools încorporează inteligența artificială pentru o creare, execuție și validare vizuală mai inteligente.

Da. Copilot, Cursor și GitHub JetBrains AI generează Java Selenium scripturi din pași în limbaj simplu, inclusiv așteptări, aserțiuni și obiecte de pagină. Acestea reduc considerabil șablonul standard pentru scenarii de testare noi.

Funcția findElement returnează primul WebElement corespondent sau generează o excepție NoSuchElementException. Funcția findElements returnează o listă cu toate corespondența și returnează o listă goală dacă nu se găsește nicio corespondență, fără a genera niciodată excepția.

Thread.sleep se întrerupe pentru o durată fixă, indiferent de starea paginii, încetinind rulările rapide și eșuând pe cele lente. Folosește WebDriverWait cu ExpectedConditions pentru a aștepta doar cât este necesar.

Selenium acceptă ChromeDriver, GeckoDriver pentru Firefox, EdgeDriver, SafariDriver și IEDriverServer. Selenium Manager în versiunea 4 descarcă automat driverul corect.

Configurați Opțiunile Chrome sau FirefoxObiect Options cu setAcceptInsecureCerts(true). Aceasta comandă browserului să ignore certificatele nevalide, astfel încât sesiunea WebDriver să poată continua.

WebDriverManager descarcă și configurează automat fișierul binar corect al driverului de browser pentru versiunea de browser instalată, eliminând întreținerea manuală a driverului și reducând timpul de configurare pentru noii contribuitori.

Rezumați această postare cu: