Selenium Tutorial - Bi Selenium WebDriver re Otomasyona Gerokê hîn bibin

Selenium komek pirtûkxaneyan e ku tê bikar anîn ku têkiliyên bikarhênerek bi gerokê re dişibîne.

Bikarhêner bi karanîna pirtûkxaneyên seleniyûmê senaryoyan dinivîsin da ku danûstendinên gerokên bikarhênerê yên hevbeş bikin, mînakî ku biçin rûpelek, bişkokek bikirtînin û formek dagirin.

Seleniyûm bi gelemperî di projeyên ku sepanên pêş-end (UI) tevneyê ava dikin de tê bikar anîn. Ew ji bo otomatîkkirina senaryoyên ku têkiliya bikarhênerek bi sepana tevnê re dişibînin tê bikar anîn.




Seleniyûmê saz bikin

Ji bo ku Selenium WebDriver di projeyek de bikar bînin, yekem e ku em Selenium Core û WebDriver Binaries saz bikin.

Em her weha neçar in ku rê ji bo her ajokarê bicîhker saz bikin.


Heke hûn dixwazin Seleniyûmê bi Java re bikar bînin, wê hingê awayê herî hêsan a sazkirina Selenyûmê bi projeya xwe ve girêdayîbûna Maven e pom.xml dosî:


org.seleniumhq.selenium
selenium-java
3.141.59

Ji bo ku ceribandinên Seleniumê li ser Google Chrome an Firefox-ê gerokê, hûn hewce ne ku pêbendiya têkildar li pom.xml dosî:

Gerokê Google Chrome


org.seleniumhq.selenium
selenium-chrome-driver
3.141.59

Firefox Browser


org.seleniumhq.selenium
selenium-firefox-driver
3.141.59

WebDriver Binaries saz bikin û Riya Saz bikin

Ji bo ku ceribandinên Selenium-ê li ser rûgerek taybetî bicîh bikin, hûn hewce ne ku binaryoyên têkildar ên gerokê-têkildar WebDriver saz bikin û rêça rast rast bikin.

Chrome Ji bo sazkirina rêça kromiumê ya li ser pergalê MacOS-ê, hûn dikarin bikar bînin:


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

Her weha hûn dikarin rê bi bernameyî, rasterast di kodê de saz bikin:

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

Firefox - Geckodriver:

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

Qerax:

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

Internet Explorer:


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

Verofêrê Gerokê Brîtanî

Piştî sazkirina Selenium, paşê ew e ku ajokarek gerokê taybetî yekser bike da ku testên UI bimeşîne.

Testên seleniyûmê li dijî navgîniya bikarhênerê ya serîlêdanê têne rêve kirin û pêdivî ye ku gerokek ku pê re kar bike. Em dikarin diyar bikin ka li hember kîjan rûgera em dixwazin ceribandinên xwe bimeşînin û paşê ajokarê guncan yekser bikin.

Not:Testên seleniyûmê tenê ji bo têne bikar anîn Otomasyona UI û ceribandinên li dijî rûgerek.

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

Qerax

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

Navîgasyon Browser

Gava ku me rûniştinek WebDriver-a çalak heye û gerokek dest pê kir, tiştê din ê ku em dixwazin bikin ev e ku em rûpelek bigerin û testan bimeşînin.

Selenium WebDriver gelek awayên kêrhatî peyda dike ku bi gerokê re têkilî dayne. Em dikarin navîgasyonê bikin û der barê rûpelê heyî de agahdarî bistînin.


Ji bo ku em biçin nav URL du vebijarkên me hene:

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

Vegerîn

Seleniyûm back() rêbaza tikandina bişkoja paşiya gerokê dişibîne:

driver.navigate().back();

Pêşve diçin

Seleniyûm forward() rêbaza tikandina bişkoja pêşê gerokê dişibîne:

driver.navigate().forward();

Rûpelê nû bikin

Seleniyûm refresh() rêbaza tikandina bişkoja nûvekirina gerokê dişibîne:


driver.navigate().refresh();

Agahdariya Rûpela Agahdar Bistîne

Selenium her weha rêbazan peyda dike ku url-ya heyî, sernavê rûpelê û çavkaniya rûpelê bigire.

URL-ya heyî bistînin

Em dikarin URL-a rûpela heyî bistînin:

driver.getCurrentUrl();

Sernavê Rûpelê bistînin

Em dikarin sernavê rûpelê heyî bistînin:

driver.getTitle();

Çavkaniya Rûpelê bistînin

Em dikarin çavkaniya rûpela heyî bistînin:

driver.getPageSource();

Danişîna Gerokê Girtin û Dakişandin

Ji bo girtina pencereya geroka heyî:

driver.close(); Not:Girtina paceya gerokê Nake rûniştina WebDriver bidawî bike.

Ji bo ku hûn di dawiya karanîna ceribandinê de ji rûniştina WebDriver derkevin:

driver.quit();

Rêbaza terikandinê dê:

  • Hemî pencereyên ku bi wê danişîna WebDriver ve girêdayî ne bigire
  • Pêvajoya gerokê bikujin
  • Pêvajoya ajokar bikujin


Locators Selenium - Meriv Çawa Hêmanên Tevneyê Dike

Berî ku em karibin bi hêmanek tevnê re têkiliyê deynin, pêdivî ye ku em ê elementê li ser rûpelê html bicîh bikin.

Yek ji girîngtirîn behreyên mihendisê otomasyona testê ku bi Selenium WebDriver re dixebite ew e ku meriv bikaribe metodên guncan bikar bîne da ku hêmanan li ser rûpelek bi cih bike.

Mînakî, heke em dixwazin zencîreyek bikirtînin, rast bikin ku peyamek tê xuyang kirin an tikandinek bikirtînin, pêdivî ye ku em yekem hêmanê bi cih bikin.

Selenium WebDriver rêbazên cûda peyda dike da ku hêmanan li ser rûpelek bi cih bike.

Lokator tiştê ku hûn dixwazin li ser rûpelek bibînin vedibêje. Li Java, em bi karanîna By sinif.

Mînakî, heke me xwest em h1 | bibînin sernavê hêmanek li ser rûpelek, em ê binivîsin

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

An jî, heke me xwest em hemî hêmanên paragrafê li ser rûpelek bibînin, em ê bikar bînin

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

Bi nivîsa zencîreyê

Ev rêbaza hanê ji hêla nivîsa rastîn ve ya ku ew nîşan dide cih digire. Ev rêbaz di normalê de ji bo girêdanên li ser rûpelek locatorê bijarte ye.

Mînakî, bihesibînin ku ev girêdana me li ser rûpelek heye:

Forgotten Password

Hingê, zencîre dikare bi karanînê were bicîh kirin:

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

Bi nivîsa girêdana qismî

Dema ku em ji vegotina rastîn a têksta girêdanê ne ewle ne lê dixwazin girêdanek an girêdanên ku bibînin tê de heye nivîsek diyarkirî, em dikarin bikar bînin

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

an

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

Gava hûn findElement bikar tînin divê hûn hay jê hebin bi vî locator re wekî ku dibe ku hêmanên din hene ku heman nivîsa qismî tê de hene, ji ber vê yekê divê ev neyê bikar anîn ku ji xwe re hêmanek tenê bi cih bike. Çêtirîn e ku meriv wê bikar bîne da ku komek hêmanan bi rêbaza findElements bi kar bîne.

Bi taybetmendiya polê

Ev hêmanan ji hêla nirxa taybetmendiya çînê ve bi cî dike. Ev dikare tenê ji bo wan hêmanên ku taybetmendiyek çîna wan heye were bikar anîn, lê ew hilbijêrekî ne baş e ku bi findElement bikar bîne. awa.

Bikaranîna heman mînaka li jor bi zencîreyê re, girêdana 'Passwordîfreya Jibîrkirî' re çîna CSS-ê heye: btn ku dikare ji bo cîhgirtina wê were bikar anîn

Forgotten Password

Wê hingê, zencîre dikare bi karanînê were bicîh kirin:

driver.findElement(By.className('btn')); Not:Taybetmendiya polê ji bo rûpelên şêwazê tê bikar anîn, û ji ber vê yekê derfet hene ku gelek hêman dibe ku xwedan heman çîn bin.

By id

Bi id, hêmanan ji hêla nirxa taybetmendiya wan a id ve cih dike. Zencîreya di mînaka jorîn de nasnameyek heye ku em dikarin bikar bînin:

Forgotten Password

Wê hingê, zencîre dikare bi karanînê were bicîh kirin:

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

Ger taybetmendiya id-ê hebe, wê hingê divê ew wekî yekem bijarteya bijarte were bikar anîn.

Bi navê xwe

Ji hêla nirxa taybetmendiya navê wan ve hêmanan cîwar dike. Bi gelemperî ew tenê dikare were bikar anîn ku hêmanên formê ku bi karanînê hatine çêkirin hatine cih kirin: , , , û .

Li ser rûpela têketinê ya tîpîk, qadên we yên têkevinê hene ku dibe ku mîna:

Dûv re em dikarin bi taybetmendiya navê navnîşê qada e-nameyê bicîh bikin

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

Bi navê tagê

Ev locator bi navê xweya HTML-ê hêmanan dibîne. Ji ber ku bi gelemperî gelek karanînên dubare yên pir nîşeyan hene, ne baş e ku meriv vê rêbazê bikar bîne da ku hêmanek tenê bi cih bike.

Bikaranînek gelemperî ya peydakirina hêmanek bi navnîşa tagê ji bo cîhkirina sernavê rûpelê ye, ji ber ku vana tenê yek heye:

Welcome to DevQA!

Paşê em dikarin qada sernavê bi navnîşa tagê bicîh bikin:

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

Ji hêla hilbijêrên Css

Bi navgîniya motora bingehîn a ajokerê W3 CSS Hilbijêrê hêmanan cîwar dike. CSS hilbijêr lokator bi hêz e ku ew dikare were bikar anîn ku her hêmanek li ser rûpelek bi cih bike.

Forgotten Password

Dûv re em dikarin bi taybetmendiya navê navnîşê qada e-nameyê bicîh bikin

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

Li vir, # id ya hêmanê temsîl dike. | . notkirin taybetmendiya çîna elementek temsîl dike.

Bo nimûne:

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

Girêdayî:

By XPath

Xebatkerên XPath hilbijarka herî tevlihev in ku bikar tînin. Ew hewceyê zanîna bi zimanê XPath query-ê ye, ji ber vê yekê heke hûn bi wî zimanî pirsiyarî nizanin, hûn ê dijwar bibînin ku hêmanan pirsên XPath bikar tînin.

Ka em ji bo vê HTML-ê li karanîna XPath-a mînak binêrin:

Change Password

Dûv re em dikarin bi taybetmendiya navê navnîşê qada e-nameyê bicîh bikin

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

Bi Hêmanên Tevneyê re têkilî danîn

Gava ku me hêmanek li ser rûpelê bicîh kir, em dikarin bi karanîna cûrbecûr rêbazên ku seleniyûm peyda dike pê re têkiliyê deynin.

Selenium WebDriver gelek awayan peyda dike ku bi hêmanên tevnê re têkildar bibin mîna tikandina bişkojên radestkirinê û têkevin nivîsarê di qadên têkevinê de.

WebElement polê gelek rêbaz hene ku em dikarin wan bi kar bînin da ku bi hêmanên rûpelê re têkiliyê deynin. Yên herî hevpar ev in:

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

Bikirtînin

click() rêbaz tête bikar anîn ku ji bo hêmanek tevnê wekî girêdan an bişkokek bitikîne.

Mînak:

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

Zelal

clear() rêbaza nirxê qada navnîşê paqij dike.

Bexşîş:Tête pêşniyar kirin ku bikar bînin .zelal() rêbaza berî ku têkstê têkevin nav qadek têkevinê.

Mînak:

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

SendKeys

Em sendKeys() bikar tînin rêbaza ku tîpan têkevin qutiyek qada navnîşê.

Mînak:

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

Mînak - Dagirtina formek

Li jêr mînakek heye ka meriv çawa Selenium bikar tîne da ku formek dagire

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

Naha ku me bingehên Selenium WebDriver nixamt, ew dem e ku meriv çarçoveyek ava bike.



Çarçoveya Seleniyûmê ava bikin

Fêr bibe ka meriv çawa ji nû ve çarçoveyek selenyûmê ava dike.

Beşa yekem a tutorial-ê gav-bi-gav li ser karanîna karanîna Java, Maven û TestNG-ê seleniyûmê WebDriver-ê pêşkêş dike.

Beşa duyemîn li ser damezrandina ceribandinên seleniyûmê li ser bingeha Modelê Navdarê Rûpelê disekine.