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.
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:
org.seleniumhq.selenium
selenium-chrome-driver
3.141.59
org.seleniumhq.selenium
selenium-firefox-driver
3.141.59
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');
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.import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; WebDriver driver = new ChromeDriver();
import org.openqa.selenium.WebDriver; import org.openqa.selenium.Firefox.FirefoxDriver; WebDriver driver = new FirefoxDriver();
import org.openqa.selenium.WebDriver; import org.openqa.selenium.edge.EdgeDriver; WebDriver driver = new EdgeDriver();
import org.openqa.selenium.WebDriver; import org.openqa.selenium.ie.InternetExplorerDriver; WebDriver driver = new InternetExplorerDriver();
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');
Selen back()
metoda simulira klikanje gumba za povratak preglednika:
driver.navigate().back();
Selen forward()
metoda simulira klikanje gumba za prosljeđivanje preglednika:
driver.navigate().forward();
Selen refresh()
metoda simulira klikanje gumba za osvježavanje preglednika:
driver.navigate().refresh();
Selenium također nudi metode za dobivanje trenutnog URL-a, naslova stranice i izvora stranice.
Možemo dobiti URL trenutne stranice:
driver.getCurrentUrl();
Možemo dobiti naslov trenutne stranice:
driver.getTitle();
Izvor trenutne stranice možemo dobiti:
driver.getPageSource();
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:
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'));
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'));
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
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.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.
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'));
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'));
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:
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']'));
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()
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();
The clear()
metoda briše vrijednost polja za unos.
Primjer:
WebElement username = driver.findElement(By.id('username')); username.clear();
Koristimo sendKeys()
metoda za unos znakova u okvir za polje za unos.
Primjer:
WebElement username = driver.findElement(By.id('username')); username.sendKeys('jondoe');
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.
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.