Vodič za selenium - naučite automatizaciju preglednika pomoću Selenium WebDriver

Selen je skup knjižnica koji se koristi za oponašanje korisnikovih interakcija s preglednikom.

Korisnici pišu skripte pomoću knjižnica selena kako bi simulirali uobičajene interakcije korisničkog preglednika, poput navigacije do stranice, klika na gumb i popunjavanja obrasca.

Selen se obično koristi u projektima koji grade web front-end (UI) aplikacije. Koristi se za automatizaciju scenarija koji oponašaju interakciju korisnika s web aplikacijom.

Instalirajte selen

Da bismo koristili Selenium WebDriver u projektu, prvo moramo instalirati Selenium Core i WebDriver Binaries.

Također moramo postaviti put za svaki izvršni program vozača.

Ako želite koristiti Selenium s Javom, tada je Selen najlakši način instaliranja putem Mavenove ovisnosti u vašem projektu pom.xml datoteka:




org.seleniumhq.selenium
selenium-java
3.141.59

Da biste pokrenuli testove selena na pregledniku Google Chrome ili Firefox, morate dodati relevantnu ovisnost u svoj pom.xml datoteka:

Preglednik Google Chrome


org.seleniumhq.selenium
selenium-chrome-driver
3.141.59

Preglednik Firefox


org.seleniumhq.selenium
selenium-firefox-driver
3.141.59

Instalirajte binarne datoteke WebDriver i postavite put

Da biste izvršili testove Selenium na određenom pregledniku, morate imati instalirane odgovarajuće binarne datoteke WebDriver specifične za preglednik i postaviti točnu putanju.

Krom Da biste postavili put do izvršne datoteke chromium na MacOS sustavu, možete upotrijebiti:

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

Put također možete postaviti programski, izravno u kodu:

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

Firefox - Geckodriver:

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

Rub:

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

Internet Explorer:

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

Instancirajte upravljački program preglednika

Nakon instalacije Selenium-a, slijedi instanciranje određenog upravljačkog programa preglednika kako bi se pokrenuli testovi korisničkog sučelja.

Ispitivanja selena pokreću se prema korisničkom sučelju aplikacije i zahtijevaju preglednik za rad. Možemo odrediti prema kojem pregledniku želimo pokrenuti naše testove, a zatim napraviti primjerak odgovarajućeg upravljačkog programa.

Bilješka:Ispitivanja selena koriste se samo za UI automatizacija a testovi se pokreću protiv preglednika.

Krom

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();

Rub

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();

Navigacija u pregledniku

Nakon što imamo aktivnu sesiju WebDriver i pokrenemo preglednik, sljedeća stvar koju želimo učiniti je prijeći na stranicu i pokrenuti testove.

Selenium WebDriver nudi brojne korisne metode za interakciju s preglednikom. Možemo izvršiti navigaciju i dobiti informacije o trenutnoj stranici.

Za navigaciju do URL-a imamo dvije mogućnosti:

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

Ide natrag

Selen back() metoda simulira klikanje gumba za povratak preglednika:

driver.navigate().back();

Ide naprijed

Selen forward() metoda simulira klikanje gumba za prosljeđivanje preglednika:

driver.navigate().forward();

Osvježavanje stranice

Selen refresh() metoda simulira klikanje gumba za osvježavanje preglednika:

driver.navigate().refresh();

Dobivanje podataka o trenutnoj stranici

Selenium također nudi metode za dobivanje trenutnog URL-a, naslova stranice i izvora stranice.

Dohvati trenutni URL

Možemo dobiti URL trenutne stranice:

driver.getCurrentUrl();

Dohvati naslov stranice

Možemo dobiti naslov trenutne stranice:

driver.getTitle();

Nabavite izvor stranice

Izvor trenutne stranice možemo dobiti:

driver.getPageSource();

Zatvaranje i napuštanje sesije preglednika

Da biste zatvorili trenutni prozor preglednika:

driver.close(); Bilješka:Zatvaranje prozora preglednika ne prekinuti sesiju WebDriver.

Da biste na kraju testiranja napustili sesiju WebDriver:

driver.quit();

Metoda napuštanja će:

  • Zatvorite sve prozore povezane s tom sesijom WebDriver
  • Ubijte postupak preglednika
  • Ubiti postupak vozača

Lokatori selena - Kako locirati web elemente

Prije mogućnosti interakcije s web elementom, moramo ga pronaći na html stranici.

Jedna od najvažnijih vještina inženjera za automatizaciju ispitivanja koji radi sa Selenium WebDriver je sposobnost korištenja odgovarajućih metoda za lociranje elemenata na stranici.

Na primjer, ako želimo kliknuti vezu, provjeriti je li prikazana poruka ili kliknuti gumb, prvo moramo locirati element.

Selenium WebDriver nudi različite metode za pronalaženje elemenata na stranici.

Lokator opisuje ono što želite pronaći na stranici. U Javi kreiramo lokator pomoću By razred.

Na primjer, ako smo željeli pronaći h1 naslovni element na stranici, napisali bismo

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

Ili, ako bismo željeli pronaći sve elemente odlomka na stranici, koristili bismo

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

Tekstom veze

Ova metoda locira elemente prema točnom tekstu koji prikazuje. Ova metoda je obično preferirani lokator za poveznice na stranici.

Na primjer, pretpostavimo da ovu vezu imamo na stranici:

Forgotten Password

Zatim se veza može pronaći pomoću:

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

Djelomičnim tekstom veze

Kada nismo sigurni u točnu formulaciju teksta veze, ali želimo pronaći vezu ili veze sadrži dani tekst, možemo koristiti

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

ili

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

Trebali biste biti oprezni kada koristite findElement s ovim lokatorom jer bi mogli postojati i drugi elementi koji sadrže isti djelomični tekst, pa se to ne bi trebalo koristiti za samostalno lociranje pojedinog elementa. Najbolje je upotrijebiti ga za lociranje grupe elemenata metodom findElements

Po atributu klase

Ovo pronalazi elemente prema vrijednosti atributa klase. Ovo se može koristiti samo za one elemente koji imaju atribut klase, ali nije dobar selektor za upotrebu s findElement metoda.

Koristeći isti primjer gore s vezom, veza 'Zaboravljena lozinka' ima jednu CSS klasu: btn pomoću kojega se može locirati

Forgotten Password

Zatim se veza može pronaći pomoću:

driver.findElement(By.className('btn')); Bilješka:Atribut klase koristi se za oblikovanje stranica, pa je velika vjerojatnost da će mnogi elementi vjerojatno imati istu klasu.

Pod id

By id, locira elemente prema vrijednosti njihovog atributa id. Veza u gornjem primjeru ima id koji možemo koristiti:

Forgotten Password

Zatim se veza može pronaći pomoću:

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

Ako je atribut id dostupan, tada ga treba koristiti kao prvi preferirani izbor.

Imenom

Locira elemente prema vrijednosti njihovog atributa imena. Obično se može koristiti samo za pronalaženje elemenata obrasca izgrađenih pomoću: , , , i .

Na tipičnoj stranici za prijavu imate polja za unos koja bi mogla biti poput:

Tada možemo locirati polje e-pošte prema atributu naziv unosa

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

Po nazivu oznake

Ovaj lokator pronalazi elemente prema nazivu HTML oznake. Budući da se većina oznaka često ponavlja, nije dobra ideja koristiti ovu metodu za lociranje pojedinog elementa.

Tipična upotreba lociranja elementa prema nazivu oznake je za lociranje zaglavlja stranice, jer postoji samo jedan od ovih:

Welcome to DevQA!

Tada možemo pronaći polje naslova prema nazivu oznake:

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

Css selektori

Locira elemente putem vozačevog osnovnog W3 CSS Selector motora. CSS selektor lokator je moćan jer se može koristiti za lociranje bilo kojeg elementa na stranici.

Forgotten Password

Tada možemo locirati polje e-pošte prema atributu naziv unosa

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

Evo, # predstavlja id elementa. I . notacija predstavlja atribut klase elementa.

Na primjer:

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

Povezano:



XPathom

Lokatori XPath najsloženiji su selektor za upotrebu. Potrebno je znanje u XPath jeziku upita, pa ako ne vladate tim jezikom upita, bit će vam teško pronaći elemente pomoću XPath upita.

Pogledajmo primjer upotrebe XPath za ovaj HTML:

Change Password

Tada možemo locirati polje e-pošte prema atributu naziv unosa

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

Interakcija s web elementima

Jednom kada smo pronašli element na stranici, možemo s njim komunicirati pomoću različitih metoda koje pruža selen.

Selenium WebDriver pruža brojne načine interakcije s web elementima, poput klikanja gumba za slanje i unosa teksta u polja za unos.

The WebElement class ima brojne metode koje možemo koristiti za interakciju s elementima stranice. Najčešći su:

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

Klik

The click() metoda koristi se za klikanje web elementa kao što je veza ili gumb.

Primjer:

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

Čisto

The clear() metoda briše vrijednost polja za unos.

Savjet:Preporuča se koristiti .čisto() prije unosa teksta u polje za unos.

Primjer:

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

SendKeys

Koristimo sendKeys() metoda za unos znakova u okvir za polje za unos.

Primjer:

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

Primjer - popunjavanje obrasca

Ispod je primjer kako koristiti Selenium za popunjavanje obrasca

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();

Sad kad smo pokrili osnove Selenium WebDrivera, vrijeme je za izgradnju okvira.

Izgradite okvir selena

Naučite kako izraditi okvir selena od nule.

Prvi dio vodiča daje korak po korak kako stvoriti okvir selena WebDriver koristeći Java, Maven i TestNG.

Drugi se dio usredotočuje na strukturiranje testova selena na temelju poznatog objektnog modela stranice.