Падручнік па селену - даведайцеся пра аўтаматызацыю аглядальнікаў з дапамогай селену WebDriver

Селен - гэта набор бібліятэк, які выкарыстоўваецца для імітацыі ўзаемадзеяння карыстальніка з браўзэрам.

Карыстальнікі пішуць сцэнарыі з выкарыстаннем бібліятэк селену для мадэлявання распаўсюджаных узаемадзеянняў карыстальнікаў, такіх як пераход да старонкі, націск кнопкі і запаўненне формы.

Селен звычайна выкарыстоўваецца ў праектах, якія ствараюць вэб-інтэрфейсныя дадаткі. Ён выкарыстоўваецца для аўтаматызацыі сцэнарыяў, якія імітуюць узаемадзеянне карыстальніка з вэб-дадаткам.




Усталюйце селен

Каб выкарыстоўваць у праекце Selenium WebDriver, спачатку трэба ўсталяваць Selenium Core і WebDriver Binaries.

Мы таксама павінны ўсталяваць шлях для кожнага выкананага драйвера.


Калі вы хочаце выкарыстоўваць Selenium з Java, то самы просты спосаб усталяваць Selenium - гэта залежнасць Maven у вашым праекце pom.xml файл:


org.seleniumhq.selenium
selenium-java
3.141.59

Каб запусціць тэсты селену ў аглядальніку Google Chrome або Firefox, вам трэба дадаць адпаведную залежнасць у вашым pom.xml файл:

Аглядальнік Google Chrome


org.seleniumhq.selenium
selenium-chrome-driver
3.141.59

Аглядальнік Firefox


org.seleniumhq.selenium
selenium-firefox-driver
3.141.59

Усталюйце двайковыя файлы WebDriver і ўсталюйце шлях

Каб выканаць тэсты Selenium у пэўным браўзэры, вам неабходна ўсталяваць адпаведныя для браўзэра двайковыя файлы WebDriver і ўсталяваць правільны шлях.

Хром Каб усталяваць шлях да выканальнага файла Chrome у сістэме MacOS, вы можаце выкарыстоўваць:


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

Вы таксама можаце ўсталяваць шлях праграмна, прама ў кодзе:

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

Firefox - Geckodriver:

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

Край:

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

Internet Explorer:


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

Імгненны драйвер браўзэра

Пасля ўстаноўкі Selenium трэба стварыць асобны драйвер браўзэра для запуску тэстаў карыстацкага інтэрфейсу.

Тэсты на селен праводзяцца супраць карыстацкага інтэрфейсу прыкладання і патрабуюць працы з браўзэрам. Мы можам вызначыць, у якім браўзэры мы хочам запускаць нашы тэсты, а затым стварыць экземпляр адпаведнага драйвера.

нататка:Тэсты на селен выкарыстоўваюцца толькі для Аўтаматызацыя карыстацкага інтэрфейсу і тэсты працуюць супраць браўзэра.

Хром

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

Край

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

Навігацыя па браўзэры

Пасля актыўнай сесіі WebDriver і запуску браўзэра наступнае, што мы хочам зрабіць, гэта перайсці да старонкі і запусціць тэсты.

Selenium WebDriver прадастаўляе шэраг карысных метадаў узаемадзеяння з браўзэрам. Мы можам выконваць навігацыю і атрымліваць інфармацыю пра бягучую старонку.


Для пераходу па URL-сайце ў нас ёсць два варыянты:

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

Вярнуцца

Селен back() метад імітуе націск кнопкі 'Назад' у браўзэры:

driver.navigate().back();

Ісці наперад

Селен forward() метад імітуе націск кнопкі перасылкі браўзэра:

driver.navigate().forward();

Абнаўленне старонкі

Селен refresh() метад імітуе націск кнопкі абнавіць браўзэр:


driver.navigate().refresh();

Атрыманне інфармацыі аб бягучай старонцы

Селен таксама прадастаўляе метады атрымання бягучай URL-адраса, загалоўка старонкі і крыніцы старонкі.

Атрымаць бягучы URL

Мы можам атрымаць URL бягучай старонкі:

driver.getCurrentUrl();

Атрымаць загаловак старонкі

Мы можам атрымаць загаловак бягучай старонкі:

driver.getTitle();

Атрымаць крыніцу старонкі

Мы можам атрымаць крыніцу бягучай старонкі:

driver.getPageSource();

Закрыццё і выхад з сесіі аглядальніка

Каб закрыць бягучае акно аглядальніка:

driver.close(); нататка:Закрыццё акна аглядальніка не завяршыць сеанс WebDriver.

Каб выйсці з сеанса WebDriver па заканчэнні тэставання, выкарыстоўвайце:

driver.quit();

Метад выхаду:

  • Зачыніце ўсе вокны, звязаныя з гэтым сеансам WebDriver
  • Забіце працэс аглядальніка
  • Забіць працэс кіроўцы


Лакатары селену - Як знайсці вэб-элементы

Перш чым мець магчымасць узаемадзейнічаць з вэб-элементам, нам трэба знайсці гэты элемент на старонцы html.

Адным з найбольш важных навыкаў інжынера аўтаматызацыі тэстаў, які працуе з Selenium WebDriver, з'яўляецца ўменне выкарыстоўваць адпаведныя метады для пошуку элементаў на старонцы.

Напрыклад, калі мы хочам націснуць на спасылку, праверыць, ці адлюстроўваецца паведамленне, альбо націснуць кнопку, нам трэба спачатку знайсці элемент.

Selenium WebDriver забяспечвае розныя метады пошуку элементаў на старонцы.

Лакатар апісвае, што вы хочаце знайсці на старонцы. У Java мы ствараем лакатар, выкарыстоўваючы By клас.

Напрыклад, калі мы хацелі знайсці h1 загаловак на старонцы, мы б напісалі

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

Альбо калі б мы хацелі знайсці ўсе элементы абзаца на старонцы, мы б выкарыстоўвалі

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

Па тэксце спасылкі

Гэты метад знаходзіць элементы па дакладнаму тэксту, які ён адлюстроўвае. Звычайна гэты спосаб з'яўляецца пераважным лакатарам для спасылак на старонцы.

Напрыклад, выкажам здагадку, што ў нас ёсць такая спасылка на старонцы:

Forgotten Password

Затым спасылку можна знайсці з дапамогай:

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

Па частковым тэксце спасылкі

Калі мы не ўпэўненыя ў дакладнай фармулёўцы тэксту спасылкі, але хочам знайсці спасылку альбо спасылкі змяшчае дадзены тэкст, мы можам выкарыстоўваць

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

альбо

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

Вы павінны быць асцярожнымі пры выкарыстанні findElement з гэтым лакатарам, паколькі могуць быць і іншыя элементы, якія ўтрымліваюць адзін і той жа частковы тэкст, таму гэта не павінна выкарыстоўвацца для пошуку аднаго элемента самастойна. Лепш за ўсё выкарыстоўваць яго, каб знайсці групу элементаў метадам findElements.

Па атрыбуце класа

Гэта знаходзіць элементы па значэнні атрыбута класа. Гэта можа быць выкарыстана толькі для тых элементаў, якія маюць атрыбут класа, але гэта не вельмі ўдалы селектар для выкарыстання з findElement метад.

Выкарыстоўваючы той самы прыклад вышэй са спасылкай, спасылка «Забыты пароль» мае адзін клас CSS: btn які можна выкарыстоўваць для яго пошуку

Forgotten Password

Затым спасылку можна знайсці з дапамогай:

driver.findElement(By.className('btn')); нататка:Атрыбут class выкарыстоўваецца для стылізацыі старонак, і таму вялікая верагоднасць, што многія элементы могуць мець адзін і той жа клас.

Па ідэнтыфікатару

Па id, знаходзіць элементы па значэнні іх атрыбута id. У спасылцы ў прыведзеным вышэй прыкладзе ёсць ідэнтыфікатар, які мы можам выкарыстоўваць:

Forgotten Password

Затым спасылку можна знайсці з дапамогай:

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

Калі атрыбут id даступны, ён павінен быць выкарыстаны ў якасці першага пераважнага выбару.

Па імені

Знаходзіць элементы па значэнні атрыбута іх імя. Звычайна яго можна выкарыстоўваць толькі для пошуку элементаў формы, пабудаваных з выкарыстаннем: , , , і .

На тыповай старонцы ўваходу ў вас ёсць поля ўводу, якія могуць быць такімі:

Затым мы можам знайсці поле электроннай пошты па атрыбуце імя ўводу

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

Па назве тэга

Гэты лакатар знаходзіць элементы па іх імені ў тэгу HTML. Паколькі большасць тэгаў часта паўтараецца, выкарыстоўваць гэты метад для пошуку аднаго элемента не вельмі добра.

Тыповае выкарыстанне пошуку элемента па імені тэга для пошуку загалоўка старонкі, бо ёсць толькі адзін з іх:

Welcome to DevQA!

Затым мы можам знайсці поле загалоўка па назве тэга:

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

Па селектарах Css

Знаходзіць элементы праз асноўны рухавік W3 CSS Selector, які знаходзіцца ў аснове драйвера. Лакатар CSS-селектара з'яўляецца магутным, бо з яго дапамогай можна знайсці любы элемент на старонцы.

Forgotten Password

Затым мы можам знайсці поле электроннай пошты па атрыбуце імя ўводу

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

Тут, # ўяўляе ідэнтыфікатар элемента. І . абазначэнне ўяўляе атрыбут класа элемента.

Напрыклад:

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

Звязаныя:

Па XPath

Лакатары XPath - самы складаны ў выкарыстанні селектар. Для гэтага патрэбныя веды на мове запытаў XPath, таму, калі вы не валодаеце гэтай мовай запытаў, вам будзе цяжка знайсці элементы з выкарыстаннем запытаў XPath.

Давайце разгледзім прыклад выкарыстання XPath для гэтага HTML:

Change Password

Затым мы можам знайсці поле электроннай пошты па атрыбуце імя ўводу

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

Узаемадзеянне з Інтэрнэт-элементамі

Пасля таго, як мы знайшлі элемент на старонцы, мы можам узаемадзейнічаць з ім, выкарыстоўваючы мноства метадаў, якія прадастаўляе селен.

Selenium WebDriver прадастаўляе шэраг спосабаў узаемадзеяння з вэб-элементамі, такімі як націсканне кнопак адпраўкі і ўвод тэксту ў палі ўводу.

WebElement class мае шэраг метадаў, якія мы можам выкарыстоўваць для ўзаемадзеяння з элементамі старонкі. Самыя распаўсюджаныя з іх:

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

Націсніце

click() метад выкарыстоўваецца для націску на такі вэб-элемент, як спасылка альбо кнопка.

Прыклад:

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

Ясна

clear() метад ачышчае значэнне поля ўводу.

Парада:Рэкамендуецца выкарыстоўваць .clear () метад перад уводам тэксту ў поле ўводу.

Прыклад:

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

SendKeys

Мы выкарыстоўваем sendKeys() метад для ўводу сімвалаў у поле ўводу.

Прыклад:

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

Прыклад - запаўненне формы

Ніжэй прыведзены прыклад таго, як выкарыстоўваць Selenium для запаўнення формы

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

Цяпер, калі мы разгледзелі асновы Selenium WebDriver, прыйшоў час стварыць аснову.



Стварыце селенавую структуру

Даведайцеся, як стварыць каркас селену з нуля.

Першая частка ўроку дае пакрокавыя інструкцыі па стварэнні селенавага фреймворка WebDriver з выкарыстаннем Java, Maven і TestNG.

Другая частка прысвечана структураванню тэстаў селену на аснове знакамітай аб'ектнай мадэлі старонкі.