Селен - гэта набор бібліятэк, які выкарыстоўваецца для імітацыі ўзаемадзеяння карыстальніка з браўзэрам.
Карыстальнікі пішуць сцэнарыі з выкарыстаннем бібліятэк селену для мадэлявання распаўсюджаных узаемадзеянняў карыстальнікаў, такіх як пераход да старонкі, націск кнопкі і запаўненне формы.
Селен звычайна выкарыстоўваецца ў праектах, якія ствараюць вэб-інтэрфейсныя дадаткі. Ён выкарыстоўваецца для аўтаматызацыі сцэнарыяў, якія імітуюць узаемадзеянне карыстальніка з вэб-дадаткам.
Каб выкарыстоўваць у праекце 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
файл:
org.seleniumhq.selenium
selenium-chrome-driver
3.141.59
org.seleniumhq.selenium
selenium-firefox-driver
3.141.59
Каб выканаць тэсты 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();
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();
Пасля актыўнай сесіі 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 бягучай старонкі:
driver.getCurrentUrl();
Мы можам атрымаць загаловак бягучай старонкі:
driver.getTitle();
Мы можам атрымаць крыніцу бягучай старонкі:
driver.getPageSource();
Каб закрыць бягучае акно аглядальніка:
driver.close();
нататка:Закрыццё акна аглядальніка не завяршыць сеанс WebDriver.Каб выйсці з сеанса WebDriver па заканчэнні тэставання, выкарыстоўвайце:
driver.quit();
Метад выхаду:
Перш чым мець магчымасць узаемадзейнічаць з вэб-элементам, нам трэба знайсці гэты элемент на старонцы 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'));
Знаходзіць элементы праз асноўны рухавік W3 CSS Selector, які знаходзіцца ў аснове драйвера. Лакатар CSS-селектара з'яўляецца магутным, бо з яго дапамогай можна знайсці любы элемент на старонцы.
Forgotten Password
Затым мы можам знайсці поле электроннай пошты па атрыбуце імя ўводу
driver.findElement(By.cssSelector('#change-password'));
Тут, #
ўяўляе ідэнтыфікатар элемента. І .
абазначэнне ўяўляе атрыбут класа элемента.
Напрыклад:
driver.findElement(By.cssSelector('.btn'));
Звязаныя:
Лакатары 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()
метад ачышчае значэнне поля ўводу.
Прыклад:
WebElement username = driver.findElement(By.id('username')); username.clear();
Мы выкарыстоўваем 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.
Другая частка прысвечана структураванню тэстаў селену на аснове знакамітай аб'ектнай мадэлі старонкі.