<style>.lazy{display:none}</style>Реализация тест-сценария на Selenium WebDriver
Реализация тест-сценария на Selenium WebDriver

Реализация тест-сценария на Selenium WebDriver

С помощью этого руководства по 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интаксисОписание
iddriver.findElement
By.id(“ID_of_Element”))
Поиск по значению
атрибута “id”
classNamedriver.findElement
(By.className
(“Class_of_Element”))
Поиск по значению
атрибута “class”
linkTextdriver.findElement
(By.linkText(“Text”))
Поиск по значению
текста ссылки (полное совпадение)
partialLinkTextdriver.findElement
(By.partialLinkText
(“PartialText”))
Поиск по значению
текст ссылки (частичное совпадение)
namedriver.findElement
(By.name
(“Name_of_Element”))
Поиск по значению атрибута “name”
xpathdriver.findElement
(By.xpath(“Xpath”))
Поиск по значению
xpath
cssSelectordriver.findElement
(By.cssSelector
(“CSS Selector”))
Поиск по значению
селектора CSS
tagNamedriver.findElement
(By.tagName(“input”))
Поиск по значению
имени тега

Заключение

В этом руководстве мы разработали сценарий автоматизации с использованием 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”

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *