„Selenium Tutorial“ - mokykitės naršyklės automatikos naudodamiesi „Selenium WebDriver“

Selenas yra bibliotekų rinkinys, naudojamas mėgdžioti vartotojo sąveiką su naršykle.

Vartotojai rašo scenarijus naudodamiesi seleno bibliotekomis, kad imituotų įprastas vartotojų naršyklių sąveikas, pvz., Naršymą į puslapį, spustelėjimą mygtuką ir formos užpildymą.

Selenas dažniausiai naudojamas projektuose, kuriuose kuriamos žiniatinklio sąsajos (UI) programos. Jis naudojamas scenarijams, imituojantiems vartotojo sąveiką su žiniatinklio programa, automatizuoti.




Įdiekite „Selenium“

Norėdami naudoti „Selenium WebDriver“ projekte, pirmiausia turime įdiegti „Selenium Core“ ir „WebDriver Binaries“.

Mes taip pat turime nustatyti kiekvieno tvarkyklės vykdomojo failo kelią.


Jei norite naudoti „Selenium“ su „Java“, paprasčiausias būdas įdiegti „Selenium“ yra naudojant „Maven“ priklausomybę jūsų projekte pom.xml failas:




org.seleniumhq.selenium
selenium-java
3.141.59

Norėdami atlikti „Selenium“ bandymus „Google Chrome“ arba „Firefox“ naršyklėje, turite pridėti atitinkamą priklausomybę savo pom.xml failas:

„Google Chrome“ naršyklė


org.seleniumhq.selenium
selenium-chrome-driver
3.141.59

„Firefox“ naršyklė


org.seleniumhq.selenium
selenium-firefox-driver
3.141.59

Įdiekite „WebDriver Binaries“ ir nustatykite kelią

Norėdami atlikti „Selenium“ testus tam tikroje naršyklėje, turite įdiegti atitinkamus naršyklės „WebDriver“ dvejetainius failus ir nustatyti teisingą kelią.

„Chrome“ Norėdami nustatyti chromo vykdomojo failo kelią „MacOS“ sistemoje, galite naudoti:


$ export PATH='$PATH:/path/to/chromedriver'

Taip pat galite nustatyti kelią programiškai, tiesiogiai kode:

System.setProperty('webdriver.chrome.driver', '/path/to/chromedriver');

„Firefox“ - „Geckodriver“:

System.setProperty('webdriver.gecko.driver', '/path/to/geckodriver');

Kraštas:

System.setProperty('webdriver.edge.driver', 'C:/path/to/MicrosoftWebDriver.exe');

Internet Explorer:


System.setProperty('webdriver.ie.driver', 'C:/path/to/IEDriver.exe');

Momentinis naršyklės tvarkyklė

Įdiegus „Selenium“, reikia iš karto sukurti konkrečią naršyklės tvarkyklę, kad būtų galima atlikti vartotojo sąsajos testus.

Seleno testai vykdomi naudojant programos vartotojo sąsają, ir norint juos naudoti reikia naršyklės. Galime nurodyti, su kuria naršykle norime paleisti bandymus, ir tada sukurti atitinkamą tvarkyklę.

Pastaba:Seleno testai naudojami tik Vartotojo sąsajos automatika ir bandymai vykdomi su naršykle.

„Chrome“

import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; WebDriver driver = new ChromeDriver();

„Firefox“

import org.openqa.selenium.WebDriver; import org.openqa.selenium.Firefox.FirefoxDriver; WebDriver driver = new FirefoxDriver();

Briauna

import org.openqa.selenium.WebDriver; import org.openqa.selenium.edge.EdgeDriver; WebDriver driver = new EdgeDriver();

Internet Explorer

import org.openqa.selenium.WebDriver; import org.openqa.selenium.ie.InternetExplorerDriver; WebDriver driver = new InternetExplorerDriver();

Naršyklės naršymas

Kai turėsime aktyvią „WebDriver“ sesiją ir paleisime naršyklę, kitas dalykas, kurį norime padaryti, yra pereiti į puslapį ir vykdyti bandymus.

„Selenium WebDriver“ pateikia daug naudingų būdų, kaip bendrauti su naršykle. Mes galime atlikti navigaciją ir gauti informacijos apie dabartinį puslapį.


Norėdami pereiti į URL, turime dvi parinktis:

//The short form driver.get('https://devqa.io'); //The long form driver.navigate().to('https://devqa.io');

Grįžti

Selenas back() metodas imituoja naršyklės grįžimo mygtuko paspaudimą:

driver.navigate().back();

Eiti į priekį

Selenas forward() metodas imituoja spustelėjimą naršyklės pirmyn mygtuką:

driver.navigate().forward();

Puslapio atnaujinimas

Selenas refresh() metodas imituoja naršyklės atnaujinimo mygtuko paspaudimą:


driver.navigate().refresh();

Gaunama dabartinio puslapio informacija

Selenas taip pat pateikia metodus, kaip gauti dabartinį URL, puslapio pavadinimą ir puslapio šaltinį.

Gauti dabartinį URL

Galime gauti dabartinio puslapio URL:

driver.getCurrentUrl();

Gauti puslapio pavadinimą

Galime gauti dabartinio puslapio pavadinimą:

driver.getTitle();

Gauti puslapio šaltinį

Galime gauti dabartinio puslapio šaltinį:

driver.getPageSource();

Naršyklės sesijos uždarymas ir uždarymas

Norėdami uždaryti dabartinį naršyklės langą:

driver.close(); Pastaba:Naršyklės lango uždarymas neturi nutraukti „WebDriver“ sesiją.

Norėdami baigti „WebDriver“ sesiją bandymo pabaigoje, atlikite toliau nurodytus veiksmus.

driver.quit();

Metimo metodas:

  • Uždarykite visus su tuo „WebDriver“ seansu susietus langus
  • Nužudyk naršyklės procesą
  • Nužudyk vairuotojo procesą


Seleno lokatoriai - kaip rasti žiniatinklio elementus

Kad galėtume sąveikauti su žiniatinklio elementu, turime rasti elementą HTML puslapyje.

Vienas iš svarbiausių bandymų automatikos inžinieriaus, dirbančio su „Selenium WebDriver“, įgūdžiai yra mokėti naudoti tinkamus metodus, norint rasti elementus puslapyje.

Pavyzdžiui, jei norime spustelėti nuorodą, patikrinti, ar rodomas pranešimas, arba spustelėti mygtuką, pirmiausia turime surasti elementą.

„Selenium WebDriver“ pateikia skirtingus metodus, kaip rasti elementus puslapyje.

Lokatorius aprašo, ką norite rasti puslapyje. „Java“ sistemoje mes sukuriame lokatorių naudodami By klasė.

Pavyzdžiui, jei norėtume rasti h1 antraštės elementą puslapyje, mes parašytume

WebElement h1Element = driver.findElement(By.tagName('h1'));

Arba, jei norėtume rasti visus pastraipos elementus puslapyje, tai naudotume

List pElements = driver.findElements(By.tagName('p'));

Pagal nuorodos tekstą

Šis metodas suranda elementus pagal tiksliai rodomą tekstą. Šis metodas paprastai yra tinkamiausias puslapio nuorodų lokatorius.

Pvz., Tarkime, kad puslapyje yra ši nuoroda:

Forgotten Password

Tada nuorodą galite rasti naudodami:

driver.findElement(By.linkText('Forgotten Password'));

Daliniu nuorodos tekstu

Kai nesame tikri dėl tikslios nuorodos teksto formuluotės, bet norime rasti nuorodą ar nuorodas yra pateiktą tekstą galime naudoti

driver.findElement(By.partialLinkText('Forgotten '));

arba

driver.findElement(By.partialLinkText('Password'));

Turėtumėte būti atsargūs naudodami findElement su šiuo lokatoriumi, nes gali būti ir kitų elementų, kuriuose yra tas pats dalinis tekstas, todėl jo nereikėtų naudoti atskiram elementui surasti. Geriausia jį naudoti elementų grupei rasti naudojant findElements metodą.

Pagal klasės atributą

Tai suranda elementus pagal klasės atributo vertę. Tai galima naudoti tik tiems elementams, kurie turi klasės atributą, tačiau tai nėra geras selektorius, kurį reikia naudoti su findElement metodas.

Naudojant tą patį aukščiau pateiktą pavyzdį su nuoroda, nuorodoje „Pamiršote slaptažodį“ yra viena CSS klasė: btn kuri gali būti naudojama jai surasti

Forgotten Password

Tada nuorodą galite rasti naudodami:

driver.findElement(By.className('btn')); Pastaba:Klasės atributas naudojamas puslapių formavimui, todėl yra tikimybė, kad daugelis elementų greičiausiai turės tą pačią klasę.

Pagal id

Pagal ID nustato elementus pagal jų atributo vertę. Ankstesniame pavyzdyje esančioje nuorodoje yra ID, kurį galime naudoti:

Forgotten Password

Tada nuorodą galite rasti naudodami:

driver.findElement(By.id('change-password'));

Jei yra atributas „id“, jis turėtų būti naudojamas kaip pirmas pageidaujamas pasirinkimas.

Pagal vardą

Randa elementus pagal jų vardo atributo vertę. Paprastai jis gali būti naudojamas tik norint rasti formos elementus, sukurtus naudojant: , , ir .

Įprastame prisijungimo puslapyje turite įvesties laukus, kurie gali būti tokie:

Tada galime rasti el. Pašto lauką pagal įvesties pavadinimo atributą

driver.findElement(By.name('email'));

Pagal žymos pavadinimą

Šis lokatorius suranda elementus pagal jų HTML žymos pavadinimą. Kadangi daugelį žymų dažnai naudoja daugybė kartų, nėra tikslinga naudoti šį metodą norint rasti vieną elementą.

Tipinis elemento vietos nustatymas pagal žymos pavadinimą yra puslapio antraštės nustatymas, nes yra tik vienas iš jų:



Welcome to DevQA!

Tada mes galime rasti antraštės lauką pagal žymos pavadinimą:

driver.findElement(By.tagName('h1'));

Autoriai Css selektoriai

Elementus suranda per vairuotojo pagrindinį W3 CSS selektoriaus variklį. CSS parinkiklio lokatorius yra galingas, nes juo galima rasti bet kurį puslapio elementą.

Forgotten Password

Tada galime rasti el. Pašto lauką pagal įvesties pavadinimo atributą

driver.findElement(By.cssSelector('#change-password'));

Čia, # žymi elemento ID. Ir . žymėjimas žymi elemento klasės atributą.

Pavyzdžiui:

driver.findElement(By.cssSelector('.btn'));

Susijęs:



Iki XPath

„XPath“ lokatoriai yra sudėtingiausias naudoti selektorius. Tam reikalingos žinios XPath užklausų kalba, taigi, jei nemokate tos užklausos kalbos, jums bus sunku rasti elementų naudojant XPath užklausas.

Pažvelkime į XPath naudojimo pavyzdį šiam HTML:

Change Password

Tada galime rasti el. Pašto lauką pagal įvesties pavadinimo atributą

driver.findElement(By.xpath('//a[@id='change-password']'));

Bendraukite su žiniatinklio elementais

Suradę elementą puslapyje, galime su juo sąveikauti naudodami įvairius metodus, kuriuos suteikia selenas.

„Selenium WebDriver“ pateikia keletą būdų, kaip sąveikauti su žiniatinklio elementais, pavyzdžiui, spustelėti pateikimo mygtukus ir įvesti tekstą įvesties laukuose.

WebElement klasėje yra daugybė metodų, kuriuos galime naudoti sąveikai su puslapio elementais. Dažniausi yra šie:

  • click()
  • clear()
  • sendKeys()
  • submit()

Spustelėkite

click() metodas naudojamas spustelėti žiniatinklio elementą, pvz., nuorodą ar mygtuką.

Pavyzdys:

Menu WebElement mToggle = driver.findElement(By.id('menu-toggle')); mToggle.click();

Aišku

clear() metodas išvalo įvesties lauko vertę.

Patarimas:Rekomenduojama naudoti .skaidrus () prieš įvesdami tekstą įvesties lauke.

Pavyzdys:

WebElement username = driver.findElement(By.id('username')); username.clear();

„SendKeys“

Mes naudojame sendKeys() metodas įvesti simbolius į įvesties lauko langelį.

Pavyzdys:

WebElement username = driver.findElement(By.id('username')); username.sendKeys('jondoe');

Pavyzdys - formos pildymas

Žemiau pateikiamas pavyzdys, kaip naudoti seleną užpildant formą

username:

Last name:


WebElement username = driver.findElement(By.id('username'));
username.sendKeys('jondoe');
WebElement password = driver.findElement(By.id('password'));
password.sendKeys('secret');
WebElement submit = driver.findElement(By.cssSelector('input[type='submit']'));
submit.click();

Dabar, kai apžvelgėme „Selenium WebDriver“ pagrindus, atėjo laikas sukurti sistemą.



Sukurkite „Selenium Framework“

Sužinokite, kaip sukurti seleno karkasą nuo nulio.

Pirmoje mokymo programos dalyje žingsnis po žingsnio pateikiama, kaip sukurti seleno „WebDriver“ sistemą naudojant „Java“, „Maven“ ir „TestNG“.

Antroje dalyje pagrindinis dėmesys skiriamas seleno testų struktūrizavimui remiantis garsiuoju „Page Object Model“.