С помощью этого руководства по Selenium WebDriver мы создадим скрипт для пользовательского сценария. Мы также изучим основные и часто используемые команды WebDriver. Также узнаем о способах расположения элементов пользовательского интерфейса на странице и их включении в сценарии тестирования. Далее мы подробно изучим Get команды.
Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
Содержание
- Создание скрипта
- Разбор кода
- Выполнение теста
- Нахождение веб-элементов
- Типы локаторов и их синтаксис
- Заключение
Создание скрипта
Для создания скрипта мы будем использовать проект “Learning_Selenium”, созданный в предыдущем уроке, и “gmail.com” в качестве тестируемого приложения.
Шаги сценария:
- Запустить браузер и открыть страницу “Gmail.com”.
- Проверить заголовок страницы и распечатать результат проверки.
- Ввести имя пользователя и пароль.
- Нажать на кнопку “Войти”.
- Закрыть веб-браузер.
Шаг 1: Создайте новый класс под названием Gmail_Login
в проекте “Learning_Selenium”.
Шаг 2: Скопируйте и вставьте приведенный ниже код в класс Gmail_Login.java
.
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; public class Gmail_Login { /** * @param args */ public static void main(String[] args) { // objects and variables instantiation WebDriver driver = new FirefoxDriver(); String appUrl = "https://accounts.google.com"; // launch the firefox browser and open the application url driver.get(appUrl); // maximize the browser window driver.manage().window().maximize(); // declare and initialize the variable to store the expected title of the webpage. String expectedTitle = " Sign in - Google Accounts "; // fetch the title of the web page and save it into a string variable String actualTitle = driver.getTitle(); // compare the expected title of the page with the actual title of the page and print the result if (expectedTitle.equals(actualTitle)) { System.out.println("Verification Successful - The correct title is displayed on the web page."); } else { System.out.println("Verification Failed - An incorrect title is displayed on the web page."); } // enter a valid username in the email textbox WebElement username = driver.findElement(By.id("Email")); username.clear(); username.sendKeys("TestSelenium"); // enter a valid password in the password textbox WebElement password = driver.findElement(By.id("Passwd")); password.clear(); password.sendKeys("password123"); // click on the Sign in button WebElement SignInButton = driver.findElement(By.id("signIn")); SignInButton.click(); // close the web browser driver.close(); System.out.println("Test script executed successfully."); // terminate the program System.exit(0); } }
Приведенный выше код эквивалентен текстовому сценарию, приведенному выше.
Разбор кода
Импорт необходимых библиотек
import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.By;
Перед началом работы над сценарием нам необходимо импортировать библиотеки:
import org.openqa.selenium.WebDriver
– импорт интерфейса WebDriver, который необходим для создания нового экземпляра веб-браузера.import org.openqa.selenium.firefox.FirefoxDriver
– импорт классаFirefoxDriver
, который необходим для создания экземпляра специфичного для Firefox драйвера на основе браузера, создаваемого с помощью интерфейса WebDriver.import org.openqa.selenium.WebElement
– импорт классаWebElement
, который необходим для создания экземпляра нового веб-элемента.import org.openqa.selenium.By
– импорт классаBy
, по которому вызываются различные типы локаторов.
Когда наш проект будет расти, очевидно и логично, что нам, возможно, придется внедрить несколько других пакетов для более сложных и специфических функций, таких как работа с excel, подключение к базе данных, ведение логов, проверки и т.д.
Создание объекта
WebDriver driver = new FirefoxDriver();
Мы создаем ссылочную переменную для интерфейса WebDriver и создаем экземпляр с помощью класса FirefoxDriver
. Будет запущен Firefox с настройками по умолчанию – это означает, что никакие расширения и плагины при этом не будут загружены и что он будет работать в безопасном режиме.
Запуск веб-браузера
driver.get(appUrl);
Для WebDriver вызывается метод get()
для запуска нового экземпляра веб-браузера. Последовательность строковых символов, переданная в качестве параметра в метод get()
, перенаправляет запущенный веб-браузер на URL-адрес приложения.
Максимизация окна браузера
driver.manage().window().maximize();
Метод maximize()
используется для увеличения окна браузера после его перенаправления на URL тестируемого приложения.
Получение тайтла страницы
driver.getTitle();
Метод getTitle()
используется для получения тайтла текущей веб-страницы. Таким образом, полученный тайтл может быть сохранен в строковую переменную.
Сравнение ожидаемого и фактического значения
if (expectedTitle.equals(actualTitle)) { System.out.println("Verification Successful - The correct title is displayed on the web page."); } else { System.out.println("Verification Failed - An incorrect title is displayed on the web page."); }
Приведенный выше код использует конструкцию условного оператора java для сравнения фактического и ожидаемого значения. На основании полученного результата будет выполнена команда print
.
Создание веб-элемента
WebElement username = driver.findElement(By.id("Email"));
В приведенном выше операторе мы создаем ссылку на WebElement с помощью driver.findElement(By.id("Email"))
. Таким образом, эту переменную можно использовать для поиска текстового поля “Email” в пользовательском интерфейсе каждый раз, когда мы хотим выполнить над ним какое-либо действие.
Метод clear
username.clear();
Метод clear()
используется для очистки значения, хранящегося в текстовом поле, если таковое имеется. Он также очищает установленное значение по умолчанию.
Метод sendKeys
username.sendKeys("TestSelenium ");
Метод sendKeys()
используется для ввода указанного значения (в круглых скобках) в текстовом поле. Обратите внимание, что метод sendKeys()
вызывается для объекта WebElement, который был создан с помощью переменной element
, соответствующей элементу пользовательского интерфейса страницы.
Приведенный выше блок кода вводит строку “TestSelenium” в текстовое поле Email в приложении Gmail.
sendKeys
– одна из наиболее часто используемых команд в сценариях WebDriver.
Метод click
SignInButton.click();
Как и sendKeys()
, click()
является еще одной часто используемой командой для взаимодействия с веб-элементами. Метод click()
используется для нажатия на веб-элемент, присутствующий на веб-странице.
Приведенный выше блок кода нажимает на кнопку “Войти” на главной странице Gmail.
Примечания:
- В отличие от метода
sendKeys()
, методclick()
не может принимать какие-либо параметры. - Иногда нажатие на веб-элемент может привести к загрузке новой страницы. Для предотвращения таких случаев метод
click()
реализовывается таким образом, чтобы дождаться загрузки этой страницы.
Закрытие веб-браузера
driver.close();
Метод close()
используется для закрытия текущего окна браузера.
Завершение работы Java-скрипта
System.exit(0);
Метод Exit()
принудительно завершает выполнение Java-скрипта.Необходимо обязательно закрывать все экземпляры браузера перед завершением Java-скрипта.
Выполнение теста
Тестовый сценарий или просто Java-скрипт может быть выполнен следующими способами:
1. В строке меню есть иконка для выполнения тестового сценария:
Обратите внимание, что будет выполнен только текущий выбранный класс.
2. Щелкните правой кнопкой мыши в любом месте класса в редакторе, выберите опцию “Run As” и нажмите на “Java Application”.
3. Другой быстрый способ выполнить тестовый скрипт – нажать Ctrl + F11.
В конце цикла выполнения в консоли появится сообщение “Test script executed successfully.”.
Нахождение веб-элементов
Веб-элементы в WebDriver можно находить и проверять так же, как мы делали это в предыдущих уроках по Selenium IDE. Selenium IDE и Firebug могут быть использованы для проверки веб-элементов в графическом интерфейсе веб-страницы. Настоятельно рекомендуется использовать Selenium IDE для поиска веб-элементов. Как только веб-элемент будет успешно найден, скопируйте и вставьте его значение в код WebDriver. Типы локаторов и способы их поиска практически одинаковы, за исключением синтаксиса и их применения.
В WebDriver веб-элементы находятся с помощью динамических искателей (findElement(By.locatorType("locator value")))
.
Пример кода:
driver.findElement(By.id("Email"));
Типы локаторов и их синтаксис
Типы локаторов | Cинтаксис | Описание |
---|---|---|
id | driver.findElement By.id(“ID_of_Element”)) | Поиск по значению атрибута “id” |
className | driver.findElement | Поиск по значению атрибута “class” |
linkText | driver.findElement | Поиск по значению текста ссылки (полное совпадение) |
partialLinkText | driver.findElement | Поиск по значению текст ссылки (частичное совпадение) |
name | driver.findElement | Поиск по значению атрибута “name” |
xpath | driver.findElement | Поиск по значению xpath |
cssSelector | driver.findElement | Поиск по значению селектора CSS |
tagName | driver.findElement | Поиск по значению имени тега |
Заключение
В этом руководстве мы разработали сценарий автоматизации с использованием Selenium WebDriver и Java. Мы также рассмотрели различные компоненты, из которых состоит сценарий WebDriver.
Кратко приведем еще раз основные моменты:
- Прежде чем приступить к созданию сценария, нам необходимо импортировать несколько библиотеком и классов, чтобы иметь возможность создать сценарий WebDriver.
importopenqa.selenium.By;
importopenqa.selenium.WebDriver;
importopenqa.selenium.WebElement;
importopenqa.selenium.firefox.FirefoxDriver;
- Метод
get()
используется для запуска нового экземпляра веб-браузера. Последовательность символов, переданная в качестве параметра в методget()
, перенаправляет запущенный экземпляр веб-браузера на URL-адрес приложения. - Метод
maximize()
используется для увеличения окна браузера. - Метод
clear()
используется для очистки значения, присутствующего в текстовом поле, если таковое имеется. - Метод
sendKeys()
используется для ввода указанного значения в текстовое поле. - Метод
click()
используется для нажатия на веб-элемент, присутствующий на веб-странице. - В WebDriver веб-элементы могут быть найдены с помощью динамических локаторов.
- Основные типы локаторов:
- id
- className
- name
- xpath
- cssSelector
- inkText
- partialLinkText
- tagName
Перевод статьи “Implementation of Our First WebDriver Script – Selenium WebDriver Tutorial”