Учебное пособие по Selenium - Изучите автоматизацию браузера с помощью Selenium WebDriver

Selenium - это набор библиотек, который используется для имитации взаимодействия пользователя с браузером.

Пользователи пишут сценарии с использованием библиотек селена для имитации обычных взаимодействий пользователя с браузером, таких как переход на страницу, нажатие кнопки и заполнение формы.

Selenium обычно используется в проектах, которые создают интерфейсные веб-приложения (UI). Он используется для автоматизации сценариев, имитирующих взаимодействие пользователя с веб-приложением.




Установить Selenium

Чтобы использовать Selenium WebDriver в проекте, нам сначала нужно установить Selenium Core и WebDriver Binaries.

Мы также должны указать путь для каждого исполняемого файла драйвера.


Если вы хотите использовать Selenium с Java, то самый простой способ установить Selenium - через зависимость Maven в вашем проекте pom.xml файл:


org.seleniumhq.selenium
selenium-java
3.141.59

Чтобы запустить тесты Selenium в браузере 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 для конкретного браузера и задан правильный путь.

Хром Чтобы установить путь к исполняемому файлу хрома в системе 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 необходимо создать экземпляр конкретного драйвера браузера для запуска тестов пользовательского интерфейса.

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

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

Хром

import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; WebDriver driver = new ChromeDriver();

Fire Fox

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

Получение информации о текущей странице

Selenium также предоставляет методы для получения текущего 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. Ссылка в приведенном выше примере имеет идентификатор, который мы можем использовать:

Forgotten Password

Затем ссылку можно найти, используя:

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

Если атрибут id доступен, его следует использовать в качестве первого предпочтительного выбора.

По имени

Находит элементы по значению их атрибута name. Обычно его можно использовать только для поиска элементов формы, построенных с помощью: , , , и .

На типичной странице входа в систему у вас есть поля ввода, которые могут выглядеть примерно так:

Затем мы можем найти поле электронной почты по атрибуту имени ввода

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

По имени тега

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

Типичное использование поиска элемента по имени тега - поиск заголовка страницы, поскольку существует только один из них:

Welcome to DevQA!

Затем мы можем найти поле заголовка по имени тега:

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

Селекторами CSS

Находит элементы с помощью механизма выбора CSS W3, лежащего в основе драйвера. Локатор селектора 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() очищает значение поля ввода.

Кончик:Рекомендуется использовать .Чисто() перед вводом текста в поле ввода.

Пример:

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, пришло время создать фреймворк.



Создайте Selenium Framework

Узнайте, как создать фреймворк на основе селена с нуля.

Первая часть учебника содержит пошаговые инструкции по созданию среды Selenium WebDriver с использованием Java, Maven и TestNG.

Вторая часть посвящена структурированию тестов на селен на основе известной объектной модели страницы.