Selenium Veebidraiver Java Programmi näide
⚡ Nutikas kokkuvõte
Selenium Veebidraiver Java Programminäide juhatab teid läbi teie esimese otsast lõpuni automatiseerimise skripti. LessNeed hõlmavad keskkonna seadistamist, elementide leidmist, sisendi saatmist, navigeerimist, valideerimist, ootamist, erandite käsitlemist ja usaldusväärsete WebDriveri testide parimaid tavasid.

Selenium Java Näide
kasutades Java klassi “myclass”, mille me eelmises õpetuses lõime, proovime luua WebDriveri skripti, mis:
Samm 1: tooma Mercury Toursi koduleht
Samm 2: kontrollige selle pealkirja
Samm 3: printige välja võrdluse tulemus
Samm 4: sulgege see enne kogu programmi lõpetamist.
Selenium WebDriveri näidis Code
Allpool on tegelik WebDriveri kood ülaltoodud stsenaariumi loogika jaoks
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(); } }
Märkus: Käivitamine Firefox 35, peate veebidraiveri kasutamiseks kasutama Mozilla loodud gecko draiverit. Selenium 3.0, geckol ja firefoxil on ühilduvusprobleeme ja nende õige seadistamine võib muutuda ülesmäge tekitavaks ülesandeks. Kui kood ei tööta, minge alla versioonile Firefox versioon 47 või vanem. Teise võimalusena saate oma skripte Chrome'is käitada. Selenium töötab Chrome'i jaoks karbist välja. Peate lihtsalt muutma 3 koodirida, et skript töötaks Chrome'iga või Firefox
Koodi selgitamine
Pakkide importimine
Alustamiseks peate importima järgmised kaks paketti:
- org.openqa.selenium.*– sisaldab klassi WebDriver, mis on vajalik konkreetse draiveriga laaditud uue brauseri loomiseks
- org.openqa.selenium.firefox.Firefoxjuht - sisaldab FirefoxA instantseerimiseks vajalik juhiklass Firefox-spetsiifiline draiver brauserisse, mille loob klass WebDriver
Kui teie test vajab keerukamaid toiminguid, nagu juurdepääs teisele klassile, brauseri ekraanipiltide tegemine või väliste failidega manipuleerimine, peate kindlasti importima rohkem pakette.
Objektide ja muutujate leidmine
Tavaliselt instantseeritakse draiveriobjekt nii.
WebDriver driver = new FirefoxDriver();
A FirefoxDraiveri klass ilma parameetriteta tähendab, et vaikimisi Firefox profiili käivitab meie Java programm. Vaikimisi Firefox profiil sarnaneb käivitamisega Firefox turvarežiimis (laiendusi ei laadita).
Mugavuse huvides salvestasime baasi. URL ja eeldatav pealkiri muutujatena.
Brauseri seansi käivitamine
WebDriver saada () meetodit kasutatakse uue brauseriseansi käivitamiseks ja selle suunamiseks URL mille määrate parameetrina.
driver.get(baseUrl);
Hankige tegelik lehe pealkiri
WebDriveri klassis on getTitle () meetod, mida kasutatakse alati hetkel laaditud lehe pealkirja hankimiseks.
actualTitle = driver.getTitle();
Võrrelge eeldatavat ja tegelikku väärtust
See koodiosa kasutab lihtsalt põhikoodi Java if-else struktuur, et võrrelda tegelikku pealkirja oodatud pealkirjaga.
if (actualTitle.contentEquals(expectedTitle)){ System.out.println("Test Passed!"); } else { System.out.println("Test Failed"); }
Brauseri seansi lõpetamine
"Sulge()” meetodit kasutatakse brauseriakna sulgemiseks.
driver.close();
Kogu programmi lõpetamine
Kui kasutate seda käsku ilma kõiki brauseriaknaid esmalt sulgemata, siis kogu oma Java programm lõpeb, jättes brauseriakna avatuks.
System.exit(0);
Testi käivitamine
Koodi käivitamiseks on kaks võimalust Eclipse SDI.
- On Eclipsei menüüribal, klõpsake Käivita > Käivita.
- press Ctrl + F11 kogu koodi käivitamiseks.
Kui tegite kõik õigesti, Eclipse väljastaks "Test läbitud!"
GUI elementide leidmine
Elementide leidmine WebDriveris tehakse kasutades "findElement (Autor.lokaator())” meetod. Koodi osa „lokaator” on sama, mis mis tahes lokaatoritel, mida on varem artiklis käsitletud Selenium IDE nende õpetuste peatükid. Tegelikult on soovitatav leida GUI elemendid IDE abil ja pärast edukat tuvastamist eksportida kood WebDriveri.
Siin on Selenium näidiskood, mis leiab elemendi selle ID järgi. Facebooki kasutatakse baasina 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); } }
Me kasutasime getTagName() meetod ex-i jaokstract selle konkreetse elemendi sildi nimi, mille ID on „email“. Käivitamisel peaks see kood suutma sildi nime „input“ õigesti tuvastada ja selle välja prindima. Eclipsekonsooli aken.
Kokkuvõte elementide asukoha määramiseks
| Variatsioon | Kirjeldus | Proov |
|---|---|---|
| By.className | leiab elemente atribuudi “class” väärtuse põhjal | findElement(By.className("someClassName") |
| Autor.cssSelector | leiab elemendid draiveri CSS-i valija mootori põhjal | findElement(By.cssSelector("input#email") |
| Autor.id | otsib elemendid nende atribuudi "id" väärtuse järgi |
findElement(By.id("someId") |
| By.linkText | leiab lingielemendi täpselt kuvatava teksti järgi |
findElement(By.linkText("REGISTRATION") |
| Nime järgi | otsib elemendid atribuudi "name" väärtuse järgi |
findElement (nime järgi ("mingi nimi") |
| By.partialLinkText | otsib elemendid, mis sisaldavad antud lingi teksti |
findElement(By.partialLinkText("REG") |
| Autor.tagName | otsib elemendid nende sildi nime järgi |
findElement(By.tagName("div") |
| Autor.xpath | otsib elemente XPathi kaudu |
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]”)) |
Märkus findElement(By.cssSelector()) kasutamise kohta
By.cssSelector() ei toeta funktsiooni "sisaldab". Kaaluge Selenium IDE kood allpool -
In Selenium IDE ülal, kogu test läbis. Kuid aastal Selenium Alloleva WebDriveri skripti puhul tekitas sama test tõrke, kuna WebDriver ei toeta meetodi By.cssSelector() puhul märksõna "sisaldab".
Ühised käsud
Veebielementide loomine
Selle asemel, et kasutada pikka süntaksit „driver.findElement(By.locator())” iga kord, kui konkreetsele elemendile juurde pääsete, saame selle jaoks luua WebElementi objekti. WebElement klass sisaldub paketis “org.openqa.selenium.*”.
Elemendil klõpsamine
Klõpsamine on ehk kõige levinum viis veebielementidega suhtlemiseks. The click() meetodit kasutatakse mis tahes elemendi klõpsamise simuleerimiseks. Järgmised Selenium Java näide näitab, kuidas click() kasutati klõpsamiseks Mercury Toursi nupp "Sisselogimine".
Click() meetodi kasutamisel tuleb tähele panna järgmisi asju.
- See ei nõua ühtegi parameetrit/argumenti.
- Meetod ootab vajaduse korral automaatselt uue lehe laadimist.
- Klõpsatav element peab olema nähtav (kõrgus ja laius ei tohi olla võrdne nulliga).
Hankige käske
Hangi käsud toovad lehe/elemendi kohta erinevat olulist teavet. Siin on mõned olulised hankimiskäsud, mida peate teadma.
| Käsud | Kasutus |
|---|---|
| saada ()
Kasutamise näidis: |
|
| getTitle ()
Kasutamise näidis: |
|
| getPageSource()
Kasutamise näidis: |
|
| getCurrentUrl()
Kasutamise näidis: |
|
| getText ()
Kasutamise näidis: |
|
Navigeerimiskäsklused
Need käsud võimaldavad teil erinevatel veebilehtedel värskendada, siseneda ja lülituda edasi-tagasi.
| navigate().to()
Kasutamise näidis: |
|
| navigate().refresh()
Kasutamise näidis: |
|
| navigate().tagasi()
Kasutamise näidis: |
|
| navigate().forward()
Kasutamise näidis: |
|
Brauseri sulgemine ja sulgemine Windows
| Sulge()
Kasutamise näidis: |
|
| loobuda ()
Kasutamise näidis: |
|
Et selgelt illustreerida erinevust close() ja quit(), proovige allolevat koodi käivitada. See kasutab veebilehte, mis avab lehe laadimisel automaatselt akna ja pärast väljumist avab teise.
Pange tähele, et ainult ülembrauseri aken suleti, mitte aga kaks hüpikakent.
Kuid kui kasutate quit(), suletakse kõik aknad – mitte ainult ülem. Proovige allolevat koodi käivitada ja märkate, et ka kaks ülaltoodud hüpikakent suletakse automaatselt.
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 } }
Kaadrite vahel vahetamine
Raami GUI elementidele juurde pääsemiseks peaksime esmalt suunama WebDriveri keskenduma raamile või hüpikaknale, enne kui pääseme juurde nende elementidele. Võtame näiteks veebilehe https://demo.guru99.com/selenium/deprecated.html
Sellel lehel on 3 raami, mille "name" atribuudid on ülaltoodud. Soovime juurdepääsu lingile „Aegunud”, mis on ümbritsetud kollasega. Selleks peame esmalt andma WebDriverile käsu lülituda „classFrame“ raamile, kasutades "switchTo().frame()" meetod. Kasutame osa "frame()" parameetrina raami atribuuti name.
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(); } }
Pärast selle koodi käivitamist näete, et "classFrame" raam viiakse lehele "Aegunud API", mis tähendab, et meie kood pääses edukalt juurde lingile "Aegunud".
Hüpikakende vahel vahetamine Windows
WebDriver võimaldab erinevalt rakendusest kuvada hüpikaknaid, nagu hoiatusi Selenium IDE. Hoiatuse elementidele (nt selles sisalduvale sõnumile) juurdepääsemiseks peame kasutama "switchTo().alert()" meetod. Allolevas koodis kasutame seda meetodit hoiatuskastile juurdepääsuks ja seejärel selle sõnumi allalaadimiseks, kasutades "getText()" meetodit ja sulgege seejärel automaatselt hoiatuskast, kasutades nuppu "switchTo().alert().accept()" meetod.
Esiteks, suunduge https://output.jsbin.com/usidix/1 ja klõpsake käsitsi nuppu "Mine!" nuppu seal ja vaadake ise sõnumi teksti.
Vaatame, Selenium Näidiskood selle tegemiseks -
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(); } }
Kohta Eclipse konsooli, pange tähele, et prinditud hoiatusteade on:
Ootab
Ootamist on kahte tüüpi.
- Kaudne ootamine – kasutatakse kogu programmis vaikimisi ooteaja määramiseks
- Otsene ootamine – kasutatakse ooteaja määramiseks ainult konkreetse eksemplari jaoks
Kaudne ootamine
- Kodeerimine on lihtsam kui selgesõnaline ootamine.
- Tavaliselt deklareeritakse see koodi eksemplariosas.
- Importimiseks on vaja ainult ühte lisapaketti.
Kaudse ootamise alustamiseks peate selle paketi oma koodi importima.
Seejärel lisage see oma koodi käivitamisossa.
Selgesõnaline ootamine
Selgesõnaline ootamine toimub klasside WebDriverWait ja ExpectedCondition abil. Järgneva jaoks Selenium WebDriveri näites ootame kuni 10 sekundit, kuni element, mille ID on "kasutajanimi", muutub nähtavaks, enne kui jätkame järgmise käsuga. Siin on sammud.
Samm 1:
Importige need kaks paketti:
Samm 2:
Deklareerige WebDriverWait muutuja. Selles näites kasutame muutuja nimena "myWaitVar".
Samm 3:
Kasutage myWaitVar koos ExpectedConditionsiga osades, kus vajate selget ootamist. Sel juhul kasutame "kasutajanime" (Mercury Tours HomePage), enne kui sisestame sellele teksti „õpetus”.
Tingimused
Tingimuslikes ja loo-režiimides kasutatakse järgmisi meetodeid:ping operatsioonid —
- isEnabled() kasutatakse siis, kui soovite enne käsu täitmist kontrollida, kas teatud element on lubatud või mitte.
- on Kuvatud() kasutatakse siis, kui soovite enne käsu täitmist kontrollida, kas teatud elementi kuvatakse või mitte.
- isSelected() kasutatakse siis, kui soovite kontrollida, kas teatud märkeruut, raadionupp või valik rippmenüüst on valitud. See ei tööta teiste elementidega.
Oodatavate tingimuste kasutamine
Klass ExpectedConditions pakub laiemat tingimuste kogumit, mida saate kasutada koos WebDriverWait meetodiga till().
Allpool on toodud mõned kõige levinumad ExpectedConditions meetodid.
- alertIsPresent() – ootab, kuni kuvatakse hoiatuskast.
- elementToBeClickable() – Ootab, kuni element on nähtav ja samal ajal lubatud. Näidis Selenium Code Allpool ootab, kuni element id=”kasutajanimi” muutub nähtavaks ja lubatuks, enne kui sellele elemendile määratakse WebElement muutuja nimega „txtUserName”.
- raamSaadavalJaLülitaSelle() – Ootab, kuni antud kaader on juba saadaval, ja seejärel lülitub sellele automaatselt.
Erandite püüdmine
IsEnabled(), isDisplayed() ja isSelected() kasutamisel eeldab WebDriver, et element on lehel juba olemas. Vastasel korral viskab a NoSuchElementException. Selle vältimiseks peaksime kasutama try-catch plokki, et programm ei katkeks.
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()); }
Kui kasutate selget ootamist, on erandi tüüp, mille peaksite tabama, "TimeoutException".

.png)
.png)
.png)
.png)
.png)
.png)

.png)


.png)
.png)
.png)
.png)
.png)
.png)

.png)
.png)
.png)