Учебники

Селен — Краткое руководство

Селен — Обзор

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

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

Sr.No. Инструмент и описание
1

Selenium IDE

Интегрированная среда разработки (IDE) Selenium — это плагин Firefox, который позволяет тестировщикам записывать свои действия, следуя рабочему процессу, который им необходим для тестирования.

2

Selenium RC

Selenium R emote C ontrol (RC) был флагманской средой тестирования, которая позволяла не только выполнять простые действия в браузере и выполнять линейно. Он использует все возможности языков программирования, таких как Java, C #, PHP, Python, Ruby и PERL, для создания более сложных тестов.

3

Selenium WebDriver

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

4

Selenium Grid

Selenium Grid — это инструмент, используемый для одновременного запуска параллельных тестов на разных машинах и в разных браузерах, что приводит к минимальному времени выполнения.

Selenium IDE

Интегрированная среда разработки (IDE) Selenium — это плагин Firefox, который позволяет тестировщикам записывать свои действия, следуя рабочему процессу, который им необходим для тестирования.

Selenium RC

Selenium R emote C ontrol (RC) был флагманской средой тестирования, которая позволяла не только выполнять простые действия в браузере и выполнять линейно. Он использует все возможности языков программирования, таких как Java, C #, PHP, Python, Ruby и PERL, для создания более сложных тестов.

Selenium WebDriver

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

Selenium Grid

Selenium Grid — это инструмент, используемый для одновременного запуска параллельных тестов на разных машинах и в разных браузерах, что приводит к минимальному времени выполнения.

Преимущества селена

QTP и Selenium являются наиболее используемыми инструментами на рынке для тестирования автоматизации программного обеспечения. Следовательно, имеет смысл сравнить плюсы Selenium с QTP.

Селен QTP
Selenium — инструмент с открытым исходным кодом. QTP является коммерческим инструментом, и для каждой из лицензий предусмотрена стоимость.
Может быть расширен для различных технологий, которые выставляют DOM. Ограниченные дополнения и нужны дополнения для каждой из технологий.
Имеет возможности для выполнения сценариев в разных браузерах. Может запускать тесты в определенных версиях Firefox, IE и Chrome.
Может выполнять сценарии в различных операционных системах. Работает только с Windows.
Поддерживает мобильные устройства. Поддерживает мобильные устройства с помощью сторонних инструментов.
Выполняет тесты в браузере, поэтому фокусировка НЕ ​​требуется во время выполнения скрипта. Необходимо сосредоточиться во время выполнения скрипта, так как инструмент действует в браузере (имитирует действия пользователя).
Может выполнять тесты параллельно с использованием Selenium Grids. QTP не может выполнять тесты параллельно, однако интеграция QTP с QC позволяет тестерам выполнять параллельно. КК также является коммерческим инструментом.

Недостатки селена

Давайте теперь обсудим подводные камни Selenium по QTP.

Селен QTP
Поддерживает только веб-приложения. Может тестировать как веб-приложения, так и настольные.
Нет функции, такой как хранилище объектов / сценарий восстановления QTP имеет встроенные репозитории объектов и сценарии восстановления.
Нет IDE, поэтому разработка скрипта не будет такой быстрой, как QTP. Более интуитивная IDE; автоматизация может быть достигнута быстрее.
Невозможно получить доступ к элементам управления в браузере. Доступ к элементам управления в браузере, таким как панель избранного, кнопки «назад» и «вперед».
Нет генерации отчета о тестировании по умолчанию. Генерация результатов теста по умолчанию в инструменте.
Для параметризации пользователи должны полагаться на язык программирования. Параметризация встроена и проста в реализации.

Селен — IDE

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

Однако записанные сценарии могут быть преобразованы в различные языки программирования, поддерживаемые Selenium, и сценарии могут выполняться и в других браузерах.

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

Sr.No. Название Описание
1 Скачать Selenium IDE

В этом разделе рассказывается, как загрузить и настроить Selenium IDE.

2 Selenium IDE Особенности

В этом разделе рассматриваются функции, доступные в Selenium IDE.

3 Создание тестов Selenium IDE

В этом разделе рассказывается, как создавать тесты IDE с помощью функции записи.

4 Selenium IDE Script Debugging

Этот раздел посвящен отладке сценария Selenium IDE.

5 Вставка точек проверки

В этом разделе описывается, как вставить точки проверки в Selenium IDE.

6 Selenium Pattern Matching

В этом разделе рассказывается, как работать с регулярными выражениями с помощью IDE.

7 Пользовательские расширения Selenium

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

8 Отличное исполнение браузера

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

В этом разделе рассказывается, как загрузить и настроить Selenium IDE.

В этом разделе рассматриваются функции, доступные в Selenium IDE.

В этом разделе рассказывается, как создавать тесты IDE с помощью функции записи.

Этот раздел посвящен отладке сценария Selenium IDE.

В этом разделе описывается, как вставить точки проверки в Selenium IDE.

В этом разделе рассказывается, как работать с регулярными выражениями с помощью IDE.

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

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

Селен — Настройка Окружающей Среды

Для разработки сценариев Selenium RC или WebDriver пользователи должны убедиться, что они выполнили начальную настройку. Настройка среды включает в себя следующие шаги.

  • Скачать и установить Java
  • Загрузите и настройте Eclipse
  • Настройте FireBug и FirePath
  • Настроить Selenium RC
  • Настроить Selenium WebDriver

Скачать и установить Java

Для работы с Selenium WebDriver / Selenium нам нужно установить JDK (Java Development Kit). Давайте посмотрим, как загрузить и установить Java.

Шаг 1 — Перейдите к UR.

https://www.oracle.com/technetwork/java/javase/downloads/index.html

Шаг 2 — Перейдите в раздел «Загрузки» и выберите «Загрузка JDK».

Selenium IDE 30

Шаг 3 — Установите переключатель «Принять лицензионное соглашение».

Selenium IDE 31

Шаг 4 — Выберите подходящую установку. В данном случае это бит «Windows 7-64». Нажмите на соответствующую ссылку и сохраните файл .exe на свой диск.

Selenium IDE 32

Шаг 5 — Запустите загруженный exe-файл, чтобы запустить мастер установки. Нажмите «Далее», чтобы продолжить.

Selenium IDE 33

Шаг 6 — Выберите функции и нажмите «Далее».

Селен IDE 34

Шаг 7 — Установщик извлечен, и его ход отображается в мастере.

Selenium IDE 35

Шаг 8 — Пользователь может выбрать место установки и нажать «Далее».

Selenium IDE 36

Шаг 9 — Установщик устанавливает JDK, и новые файлы копируются.

Selenium IDE 37

Шаг 10 — Установщик успешно установится и отобразит его пользователю.

Selenium IDE 38

Шаг 11 — Чтобы убедиться, что установка прошла успешно, перейдите в командную строку и просто введите «java» в качестве команды. Вывод команды показан ниже. Если установка Java не удалась или если она НЕ была установлена, выдается ошибка «неизвестная команда».

Selenium IDE 48

Загрузите и настройте Eclipse

Шаг 1 — Перейдите по URL-адресу: https://www.eclipse.org/downloads/ и загрузите соответствующий файл в зависимости от архитектуры вашей ОС.

Selenium IDE 39

Шаг 2 — Нажмите кнопку «Скачать».

Selenium IDE 40

Шаг 3 — Загрузка будет в формате Zip. Распакуйте содержимое.

Selenium IDE 41

Шаг 4 — Найдите Eclipse.exe и дважды щелкните файл.

Selenium IDE 42

Шаг 5 — Чтобы настроить рабочее пространство, выберите место, где должна проходить разработка.

Selenium IDE 43

Шаг 6 — Откроется окно Eclipse, как показано ниже.

Selenium IDE 44

Настройте FireBug и FirePath

Чтобы работать с Selenium RC или WebDriver, нам нужно найти элементы на основе их XPath или ID или имени и т. Д. Чтобы найти элемент, нам нужны инструменты / плагины.

Шаг 1 — Перейдите по URL: https://addons.mozilla.org/en-US/firefox/addon/firebug/ и загрузите плагин.

Selenium IDE 62

Шаг 2 — Установщик надстройки показывается пользователю и устанавливается после нажатия кнопки «Установить».

Selenium IDE 63

Шаг 3 — После установки мы можем запустить плагин, перейдя в «Веб-разработчик» >> «Firebug».

Selenium IDE 64

Шаг 4 — FirePath, плагин, который работает в Firebug, помогает пользователям получить «XPath» элемента. Установите FirePath, перейдя по ссылке « https://addons.mozilla.org/en-US/firefox/addon/firepath/ ».

Selenium IDE 65

Шаг 5 — Установщик надстройки показывается пользователю и устанавливается после нажатия кнопки «Установить».

Selenium IDE 66

Шаг 6 — Теперь запустите «Firebug», перейдя в «Инструменты» >> «Веб-разработчик» >> «Firebug».

Селен IDE 67

пример

Теперь давайте разберемся, как использовать FireBug и FirePath с примером. Для демонстрации мы будем использовать www.google.com и захватить свойства текстового поля «google.com».

Шаг 1 — Сначала щелкните значок стрелки, как показано на следующем снимке экрана, и перетащите его к объекту, для которого мы хотели бы захватить свойства. HTML / DOM объекта будет отображаться, как показано ниже. Мы можем захватить «ID» текстового поля ввода, с которым мы можем взаимодействовать.

Selenium IDE 68

Шаг 2 — Чтобы получить XPath объекта, перейдите на вкладку «firepath» и выполните следующие шаги.

  • Нажмите на значок шпиона.
  • Выберите элемент управления, для которого мы хотели бы захватить XPath.
  • XPath выбранного элемента управления будет создан.

Selenium IDE 69

Настроить Selenium RC

Теперь давайте посмотрим, как настроить Selenium Remote control. Мы поймем, как разрабатывать сценарии с помощью Selenium RC в следующих главах, однако сейчас мы разберемся только с его конфигурационной частью.

Шаг 1 — Перейдите в раздел загрузок Selenium http://www.seleniumhq.org/download/ и загрузите Selenium Server, нажав на его номер версии, как показано ниже.

Selenium IDE 45

Шаг 2 — После загрузки нам нужно запустить Selenium Server. Для этого откройте командную строку и перейдите в папку, где хранится загруженный файл JAR, как показано ниже.

Selenium IDE 46

Шаг 3 — Чтобы запустить сервер, используйте команду ‘java -jar << имя загруженного jar >> и, если java JDK установлен правильно, вы получите сообщение об успешном завершении, как показано ниже. Теперь мы можем начать писать сценарии Selenium RC.

Selenium IDE 47

Настроить Selenium WebDriver

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

Шаг 1 — Перейдите в раздел загрузок селена http://www.seleniumhq.org/download/ и загрузите Selenium WebDriver, щелкнув по номеру его версии, как показано ниже.

Selenium IDE 49

Шаг 2 — Загруженный файл имеет формат Zip, и необходимо разархивировать содержимое, чтобы сопоставить его с папкой проекта.

Selenium IDE 49

Шаг 3 — Распакованное содержимое будет отображаться, как показано ниже. Как сопоставить его с папкой проекта и как запустить сценарии, будет рассмотрено в главе webDriver.

Selenium IDE 51

Селен — Пульт дистанционного управления

Что такое Selenium RC?

Selenium Remote Control (RC) был основным проектом Selenium, который поддерживался в течение долгого времени до появления Selenium WebDriver (Selenium 2.0). В настоящее время Selenium RC практически не используется, поскольку WebDriver предлагает более мощные функции, однако пользователи по-прежнему могут разрабатывать сценарии с использованием RC.

Это позволяет нам писать автоматизированные тесты пользовательского интерфейса веб-приложения с помощью всех возможностей языков программирования, таких как Java, C #, Perl, Python и PHP, для создания более сложных тестов, таких как чтение и запись файлов, запросы к базе данных и результаты тестов по электронной почте. ,

Selenium RC Architecture

Selenium RC работает таким образом, что клиентские библиотеки могут связываться с Selenium RC Server, передавая каждую команду Selenium для выполнения. Затем сервер передает команду Selenium в браузер, используя команды Selenium-Core JavaScript.

Браузер выполняет команду Selenium, используя свой интерпретатор JavaScript.

Selenium IDE 52

Selenium RC состоит из двух частей.

  • Selenium Server запускает и убивает браузеры. Кроме того, он интерпретирует и выполняет команды Selenese. Он также действует как HTTP-прокси, перехватывая и проверяя HTTP-сообщения, передаваемые между браузером и тестируемым приложением.

  • Клиентские библиотеки, которые обеспечивают интерфейс между каждым из языков программирования (Java, C #, Perl, Python и PHP) и сервером Selenium-RC.

Selenium Server запускает и убивает браузеры. Кроме того, он интерпретирует и выполняет команды Selenese. Он также действует как HTTP-прокси, перехватывая и проверяя HTTP-сообщения, передаваемые между браузером и тестируемым приложением.

Клиентские библиотеки, которые обеспечивают интерфейс между каждым из языков программирования (Java, C #, Perl, Python и PHP) и сервером Selenium-RC.

RC сценарий

Теперь давайте напишем пример сценария с использованием Selenium Remote Control. Давайте использовать http://www.calculator.net/ для понимания Selenium RC. Мы выполним вычисление процентов с помощью калькулятора процентов, который присутствует в модуле «Математические калькуляторы».

Шаг 1 — Запустите Selenium Remote Control (с помощью командной строки).

Шаг 2 — После запуска Selenium RC, откройте Eclipse и создайте «Новый проект», как показано ниже.

Selenium IDE 53

Шаг 3 — Введите название проекта и нажмите кнопку «Далее».

Селен IDE 54

Шаг 4. Проверьте папку «Источник», «Проекты», «Библиотеки» и «Вывод» и нажмите «Готово».

Селен IDE 55

Шаг 5 — Щелкните правой кнопкой мыши на контейнере проекта и выберите «Настроить путь сборки».

Selenium IDE 56

Шаг 6 — Свойства для selrcdemo открывается. Перейдите на вкладку «Библиотеки» и выберите «Добавить внешние JAR». Выберите загруженный нами файл jar Selenium RC, и он будет выглядеть так, как показано ниже.

Selenium IDE 57

Шаг 7 — Библиотеки, на которые ссылаются, показаны, как показано ниже.

Selenium IDE 58

Шаг 8 — Создайте новый файл класса, щелкнув правой кнопкой мыши по папке ‘src’ и выбрав ‘New’ >> ‘class’.

Selenium IDE 59

Шаг 9 — Введите имя файла класса и включите «public static void main», как показано ниже.

Selenium IDE 60

Шаг 10 — Созданный класс создается в структуре папок, как показано ниже.

Selenium IDE 70

Шаг 11 — Теперь пришло время для кодирования. В следующем коде есть комментарии, встроенные в него, чтобы читатели поняли, что было предложено.

package selrcdemo;

import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;

public class rcdemo {
   public static void main(String[] args) throws InterruptedException {

      // Instatiate the RC Server
      Selenium selenium = new DefaultSelenium("localhost", 4444 , "firefox", "http://www.calculator.net");
      selenium.start();   // Start
      selenium.open("/");  // Open the URL
      selenium.windowMaximize();

      // Click on Link Math Calculator
      selenium.click("xpath = .//*[@id = 'menu']/div[3]/a");
      Thread.sleep(2500); // Wait for page load

      // Click on Link Percent Calculator
      selenium.click("xpath = .//*[@id = 'menu']/div[4]/div[3]/a");
      Thread.sleep(4000); // Wait for page load

      // Focus on text Box
      selenium.focus("name = cpar1");
      
      // enter a value in Text box 1
      selenium.type("css=input[name = \"cpar1\"]", "10");
      
      // enter a value in Text box 2
      selenium.focus("name = cpar2");
      selenium.type("css = input[name = \"cpar2\"]", "50");

      // Click Calculate button
      selenium.click("xpath = .//*[@id = 'content']/table/tbody/tr/td[2]/input");

      // verify if the result is 5
      String result = selenium.getText(".//*[@id = 'content']/p[2]");

      if (result == "5") {
         System.out.println("Pass");
      } else {
         System.out.println("Fail");
      }
   }
}

Шаг 12 — Теперь давайте запустим скрипт, нажав кнопку «Выполнить».

Selenium IDE 72

Шаг 13 — Сценарий начнет выполняться, и пользователь сможет увидеть историю команд на вкладке «История команд».

Selenium IDE 71

Шаг 14 — Окончательное состояние приложения показано ниже. Процент рассчитывается, и он отображает результат на экране, как показано ниже.

Selenium IDE 73

Шаг 15 — Вывод теста печатается на консоли Eclipse, как показано ниже, так как мы выводили вывод на консоль. В режиме реального времени вывод записывается в файл HTML или в простой текстовый файл.

Selenium IDE 74

Селен — Селена Команды

Команда ссылается на то, что должен делать Selenium, а команды в селене бывают трех типов. Нажмите на каждый из них, чтобы узнать больше о командах.

действия

Accessors

Утверждения

Локаторы

Локаторы элементов помогают Selenium идентифицировать HTML-элемент, на который ссылается команда. Все эти локаторы могут быть идентифицированы с помощью плагинов FirePath и FireBug Mozilla. Пожалуйста, обратитесь к главе «Настройка среды» для более подробной информации.

  • identifier = id Выберите элемент с указанным атрибутом «id» и, если совпадений нет, выберите первый элемент, атрибутом @name которого является id.

  • id = id Выберите элемент с указанным атрибутом «id».

  • name = name Выберите первый элемент с указанным атрибутом «name»

  • dom = javascriptExpression Selenium находит элемент, оценивая указанную строку, которая позволяет нам проходить через объектную модель документа HTML с помощью JavaScript. Пользователи не могут возвращать значение, но могут оценивать как выражение в блоке.

  • xpath = xpathExpression Найдите элемент, используя выражение XPath.

  • link = textPattern Выберите элемент ссылки (внутри тегов привязки), который содержит текст, соответствующий указанному шаблону.

  • css = cssSelectorSyntax Выберите элемент с помощью селектора css.

identifier = id Выберите элемент с указанным атрибутом «id» и, если совпадений нет, выберите первый элемент, атрибутом @name которого является id.

id = id Выберите элемент с указанным атрибутом «id».

name = name Выберите первый элемент с указанным атрибутом «name»

dom = javascriptExpression Selenium находит элемент, оценивая указанную строку, которая позволяет нам проходить через объектную модель документа HTML с помощью JavaScript. Пользователи не могут возвращать значение, но могут оценивать как выражение в блоке.

xpath = xpathExpression Найдите элемент, используя выражение XPath.

link = textPattern Выберите элемент ссылки (внутри тегов привязки), который содержит текст, соответствующий указанному шаблону.

css = cssSelectorSyntax Выберите элемент с помощью селектора css.

Селен — вебдрайвер

WebDriver — это инструмент для автоматизации тестирования веб-приложений. Он широко известен как Selenium 2.0. WebDriver использует другую базовую среду, а Selenium RC использует JavaScript Selenium-Core, встроенный в браузер, который имеет некоторые ограничения. WebDriver взаимодействует напрямую с браузером без какого-либо посредника, в отличие от Selenium RC, который зависит от сервера. Используется в следующем контексте —

  • Тестирование в нескольких браузерах, включая улучшенную функциональность для браузеров, которая не очень хорошо поддерживается Selenium RC (Selenium 1.0).

  • Обработка нескольких кадров, нескольких окон браузера, всплывающих окон и оповещений.

  • Сложная навигация по страницам.

  • Продвинутая пользовательская навигация, такая как перетаскивание.

  • Элементы пользовательского интерфейса на основе AJAX.

Тестирование в нескольких браузерах, включая улучшенную функциональность для браузеров, которая не очень хорошо поддерживается Selenium RC (Selenium 1.0).

Обработка нескольких кадров, нескольких окон браузера, всплывающих окон и оповещений.

Сложная навигация по страницам.

Продвинутая пользовательская навигация, такая как перетаскивание.

Элементы пользовательского интерфейса на основе AJAX.

Архитектура

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

Selenium IDE 92

Selenium RC против WebDriver

Selenium RC Selenium WebDriver
Архитектура Selenium RC сложна, так как сервер должен быть запущен и запущен до начала тестирования. Архитектура WebDriver проще, чем Selenium RC, поскольку она управляет браузером с уровня ОС.
Сервер Selenium выступает посредником между командами браузера и Selenese. WebDriver взаимодействует напрямую с браузером и использует движок браузера для управления им.
Выполнение сценария Selenium RC медленнее, поскольку для взаимодействия с RC используется Javascript. WebDriver работает быстрее, так как напрямую взаимодействует с браузером.
Selenium RC не может поддерживать безголовое выполнение, поскольку для работы необходим настоящий браузер. WebDriver может поддерживать безголовое выполнение.
Это простой и маленький API. Сложный и немного большой API по сравнению с RC.
Менее объектно-ориентированный API. Чисто объектно-ориентированный API.
Невозможно протестировать мобильные приложения. Может тестировать приложения для iPhone / Android.

Сценарии с использованием WebDriver

Давайте разберемся, как работать с WebDriver. Для демонстрации мы будем использовать https://www.calculator.net/ . Мы выполним «Калькулятор процентов», который находится в разделе «Математический калькулятор». Мы уже загрузили необходимые файлы JAR WebDriver. Подробнее см. Главу «Настройка окружающей среды».

Шаг 1 — Запустите «Затмение» из папки «Извлеченное затмение».

Selenium IDE 75

Шаг 2 — Выберите рабочую область, нажав кнопку «Обзор».

Selenium IDE 76

Шаг 3 — Теперь создайте «Новый проект» из меню «Файл».

Selenium IDE 53

Шаг 4 — Введите имя проекта и нажмите «Далее».

Selenium IDE 77

Шаг 5 — Перейдите на вкладку «Библиотеки» и выберите все файлы JAR, которые мы скачали. Добавьте ссылку на все JAR-файлы библиотеки Selenium WebDriver Library, а также selenium-java-2.42.2.jar и selenium-java-2.42.2-srcs.jar.

Selenium IDE 78

Шаг 6 — Пакет создается, как показано ниже.

Selenium IDE 79

Шаг 7 — Теперь щелкните правой кнопкой мыши на пакете и выберите «Новый» >> «Класс», чтобы создать «класс».

Selenium IDE 82

Шаг 8 — Теперь назовите класс и сделайте его основной функцией.

Selenium IDE 80

Шаг 9 — Схема класса показана ниже.

Selenium IDE 81

Шаг 10 — Теперь пришло время кодировать. Следующий скрипт легче понять, так как в него встроены комментарии для ясного объяснения шагов. Пожалуйста, ознакомьтесь с главой «Локаторы», чтобы понять, как получить свойства объекта.

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;

public class webdriverdemo {
   public static void main(String[] args) {
   
      WebDriver driver = new FirefoxDriver();
      //Puts an Implicit wait, Will wait for 10 seconds before throwing exception
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      
      //Launch website
      driver.navigate().to("http://www.calculator.net/");
      
      //Maximize the browser
      driver.manage().window().maximize();
      
      // Click on Math Calculators
      driver.findElement(By.xpath(".//*[@id = 'menu']/div[3]/a")).click();
      
      // Click on Percent Calculators
      driver.findElement(By.xpath(".//*[@id = 'menu']/div[4]/div[3]/a")).click();
      
      // Enter value 10 in the first number of the percent Calculator
      driver.findElement(By.id("cpar1")).sendKeys("10");
      
      // Enter value 50 in the second number of the percent Calculator
      driver.findElement(By.id("cpar2")).sendKeys("50");
      
      // Click Calculate Button
      driver.findElement(By.xpath(".//*[@id = 'content']/table/tbody/tr[2]/td/input[2]")).click();

      
      // Get the Result Text based on its xpath
      String result =
         driver.findElement(By.xpath(".//*[@id = 'content']/p[2]/font/b")).getText();

      
      // Print a Log In message to the screen
      System.out.println(" The Result is " + result);
      
      //Close the Browser.
      driver.close();
   }
}

Шаг 11 — Вывод вышеуказанного скрипта будет напечатан в консоли.

Selenium IDE 83

Самые используемые команды

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

Sr.No. Команда и описание
1

driver.get ( «URL»)

Для перехода к приложению.

2

element.sendKeys ( «inputtext»)

Введите текст в поле ввода.

3

element.clear ()

Очистите содержимое от поля ввода.

4

select.deselectAll ()

Отмените выбор всех ОПЦИЙ из первого ВЫБРАТЬ на странице.

5

select.selectByVisibleText («некоторый текст»)

Выберите опцию с вводом, указанным пользователем.

6

driver.switchTo (). окно ( «WindowName»)

Переместите фокус с одного окна на другое.

7

driver.switchTo (). рама ( «frameName»)

Качайтесь от кадра к кадру.

8

driver.switchTo (). Оповещение ()

Помогает в обработке оповещений.

9

driver.navigate (). к ( «URL»)

Перейдите к URL.

10

driver.navigate (). вперед ()

Для навигации вперед.

11

driver.navigate (). назад ()

Для навигации назад.

12

driver.close ()

Закрывает текущий браузер, связанный с драйвером.

13

driver.quit ()

Выходит из драйвера и закрывает все связанные окна этого драйвера.

14

driver.refresh ()

Обновляет текущую страницу.

driver.get ( «URL»)

Для перехода к приложению.

element.sendKeys ( «inputtext»)

Введите текст в поле ввода.

element.clear ()

Очистите содержимое от поля ввода.

select.deselectAll ()

Отмените выбор всех ОПЦИЙ из первого ВЫБРАТЬ на странице.

select.selectByVisibleText («некоторый текст»)

Выберите опцию с вводом, указанным пользователем.

driver.switchTo (). окно ( «WindowName»)

Переместите фокус с одного окна на другое.

driver.switchTo (). рама ( «frameName»)

Качайтесь от кадра к кадру.

driver.switchTo (). Оповещение ()

Помогает в обработке оповещений.

driver.navigate (). к ( «URL»)

Перейдите к URL.

driver.navigate (). вперед ()

Для навигации вперед.

driver.navigate (). назад ()

Для навигации назад.

driver.close ()

Закрывает текущий браузер, связанный с драйвером.

driver.quit ()

Выходит из драйвера и закрывает все связанные окна этого драйвера.

driver.refresh ()

Обновляет текущую страницу.

Селен — Локаторы

Поиск элементов в Selenium WebDriver выполняется с помощью методов findElement () и findElements (), предоставляемых классами WebDriver и WebElement.

  • findElement () возвращает объект WebElement на основе заданных критериев поиска или в результате выдает исключение, если не находит ни одного элемента, соответствующего критериям поиска.

  • findElements () возвращает список веб-элементов, соответствующих критериям поиска. Если элементы не найдены, возвращается пустой список.

findElement () возвращает объект WebElement на основе заданных критериев поиска или в результате выдает исключение, если не находит ни одного элемента, соответствующего критериям поиска.

findElements () возвращает список веб-элементов, соответствующих критериям поиска. Если элементы не найдены, возвращается пустой список.

В следующей таблице перечислены все синтаксисы Java для поиска элементов в Selenium WebDriver.

метод Синтаксис Описание
По идентификатору driver.findElement (By.id (<идентификатор элемента>)) Находит элемент, используя атрибут ID
По имени driver.findElement (By.name (<имя элемента>)) Находит элемент, используя атрибут Name
По названию класса driver.findElement (By.className (<element class>)) Находит элемент, используя атрибут Class
По имени тега driver.findElement (By.tagName (<htmltagname>)) Находит элемент, используя тег HTML
По тексту ссылки driver.findElement (By.linkText (<linktext>)) Находит ссылку, используя текст ссылки
Частичным текстом ссылки driver.findElement (By.partialLinkText (<linktext>)) Находит ссылку, используя частичный текст ссылки
По CSS driver.findElement (By.cssSelector (<селектор css>)) Находит элемент с помощью селектора CSS
По XPath driver.findElement (By.xpath (<xpath>)) Находит элемент, используя запрос XPath

Использование локаторов

Теперь позвольте нам понять практическое использование каждого из методов локатора с помощью https://www.calculator.net

По идентификатору

Здесь объект доступен с помощью идентификаторов. В данном случае это идентификатор текстового поля. Значения вводятся в текстовое поле с помощью метода sendkeys с помощью идентификатора (cdensity).

Selenium IDE 84

driver.findElement(By.id("cdensity")).sendKeys("10");

По имени

Здесь объект доступен с помощью имен. В данном случае это имя текстового поля. Значения вводятся в текстовое поле с помощью метода sendkeys с помощью идентификатора (cdensity).

Селен IDE 85

driver.findElement(By.name("cdensity")).sendKeys("10");

По имени класса

Здесь доступ к объекту осуществляется с помощью имен классов. В данном случае это имя класса WebElement. Значение может быть доступно с помощью метода gettext.

Селен IDE 86

List<WebElement> byclass = driver.findElements(By.className("smalltext smtb"));

По имени тега

Имя тега DOM элемента можно использовать для поиска этого конкретного элемента в WebDriver. С помощью этого метода очень легко обрабатывать таблицы. Посмотрите на следующий код.

WebElement table = driver.findElement(By.id("calctable"));
List<WebElement> row = table.findElements(By.tagName("tr"));
int rowcount = row.size();

По тексту ссылки

Этот метод помогает найти элемент ссылки с соответствующим видимым текстом.

Selenium IDE 87

driver.findElements(By.linkText("Volume")).click();

Частичным текстом ссылки

Этот метод помогает найти элемент ссылки с частичным совпадением видимого текста.

Selenium IDE 87

 . Driver.findElement (By.partialLinkText ( "Volume")) нажмите ();

По CSS

CSS используется как метод идентификации веб-объекта, однако НЕ все браузеры поддерживают идентификацию CSS.

WebElement loginButton = driver.findElement(By.cssSelector("input.login"));

По XPath

XPath обозначает язык путей XML. Это язык запросов для выбора узлов из XML-документа. XPath основан на древовидном представлении документов XML и предоставляет возможность перемещаться по дереву, выбирая узлы, используя различные критерии.

Selenium IDE 88

driver.findElement(By.xpath(".//*[@id = 'content']/table[1]/tbody/tr/td/table/tbody/tr[2]/td[1]/input")).sendkeys("100");

Selenium — Взаимодействие с пользователем

Selenium WebDriver является наиболее часто используемым инструментом среди всех инструментов, доступных в наборе инструментов Selenium. Поэтому важно понимать, как использовать Selenium для взаимодействия с веб-приложениями. В этом модуле давайте разберемся, как взаимодействовать с объектами GUI с помощью Selenium webDriver.

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

Ниже перечислены различные виды действий против этих объектов GUI —

Взаимодействие с текстовыми полями

Выбор радиокнопки

Выбор флажка

Выпадающий выбор предмета

синхронизация

Перетаскивания

Действия клавиатуры

Действия мыши

Выбор из нескольких вариантов

Найти все ссылки

Селен — Методы проектирования испытаний

В разработке тестов участвуют различные компоненты. Давайте разберемся с некоторыми важными компонентами, участвующими в разработке структуры. Мы изучим следующие темы в этой главе —

Объектная модель страницы

Параметризация с использованием Excel

Log4j Logging

Обработка исключений

Тестирование нескольких браузеров

Захватить скриншоты

Захват видео

Селен — TestNG

TestNG — это мощная среда тестирования, расширенная версия JUnit, которая использовалась в течение долгого времени до появления TestNG. NG означает «Следующее поколение».

Платформа TestNG предоставляет следующие функции —

  • Аннотации помогают нам легко организовать тесты.
  • Гибкая тестовая конфигурация.
  • Тестовые случаи могут быть сгруппированы более легко.
  • Распараллеливание тестов может быть достигнуто с помощью TestNG.
  • Поддержка тестирования на основе данных.
  • Встроенная отчетность.

Установка TestNG для Eclipse

Шаг 1 — Запустите Eclipse и выберите «Установить новое программное обеспечение».

Selenium IDE 93

Шаг 2. Введите URL-адрес как «http://beust.com/eclipse» и нажмите «Добавить».

Селен IDE 94

Шаг 3 — Откроется диалоговое окно «Добавить репозиторий». Введите имя как «TestNG» и нажмите «ОК»

Селен IDE 95

Шаг 4 — Нажмите «Выбрать все», и «TestNG» будет выбран, как показано на рисунке.

Селен IDE 96

Шаг 5 — Нажмите «Далее», чтобы продолжить.

Selenium IDE 97

Шаг 6 — Просмотрите выбранные элементы и нажмите «Далее».

Селен IDE 98

Шаг 7 — «Принять лицензионное соглашение» и нажать «Готово».

Selenium IDE 99

Шаг 8 — TestNG начинает установку, и прогресс будет показан ниже.

Selenium IDE 100

Шаг 9 — Предупреждение безопасности появляется, поскольку действительность программного обеспечения не может быть установлена. Нажмите «ОК».

Selenium IDE 101

Шаг 10 — Установщик предлагает перезапустить Eclipse, чтобы изменения вступили в силу. Нажмите «Да».

Selenium IDE 102

Аннотации в TestNG

Аннотации были формально добавлены к языку Java в JDK 5, и TestNG сделал выбор использовать аннотации для аннотирования тестовых классов. Ниже приведены некоторые преимущества использования аннотаций. Подробнее о TestNG можно найти здесь

  • TestNG определяет интересующие его методы, просматривая аннотации. Следовательно, имена методов не ограничены каким-либо шаблоном или форматом.

  • Мы можем передать дополнительные параметры в аннотации.

  • Аннотации строго напечатаны, поэтому компилятор сразу же отметит любые ошибки.

  • Тестовым классам больше не нужно ничего расширять (например, TestCase, для JUnit 3).

TestNG определяет интересующие его методы, просматривая аннотации. Следовательно, имена методов не ограничены каким-либо шаблоном или форматом.

Мы можем передать дополнительные параметры в аннотации.

Аннотации строго напечатаны, поэтому компилятор сразу же отметит любые ошибки.

Тестовым классам больше не нужно ничего расширять (например, TestCase, для JUnit 3).

Sr.No. Аннотация и описание
1

@BeforeSuite

Аннотированный метод будет запущен только один раз до запуска всех тестов в этом наборе.

2

@AfterSuite

Аннотированный метод будет запущен только один раз после выполнения всех тестов в этом наборе.

3

@BeforeClass

Аннотированный метод будет запущен только один раз, прежде чем будет вызван первый тестовый метод в текущем классе.

4

@После школы

Аннотированный метод будет запущен только один раз после запуска всех тестовых методов в текущем классе.

5

@BeforeTest

Аннотированный метод будет запущен до запуска любого тестового метода, принадлежащего классам внутри тега <test>.

6

@AfterTest

Аннотированный метод будет запущен после запуска всех тестовых методов, принадлежащих классам внутри тега <test>.

7

@BeforeGroups

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

8

@AfterGroups

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

9

@BeforeMethod

Аннотированный метод будет запускаться перед каждым тестовым методом.

10

@AfterMethod

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

11

@DataProvider

Отмечает метод как предоставление данных для метода тестирования. Аннотированный метод должен возвращать объект [] [], где каждому объекту [] можно назначить список параметров метода тестирования. Метод @Test, который хочет получать данные от этого DataProvider, должен использовать имя dataProvider, равное имени этой аннотации.

12

@Factory

Помечает метод как фабрику, которая возвращает объекты, которые будут использоваться TestNG в качестве тестовых классов. Метод должен возвращать Object [].

13

@Listeners

Определяет слушателей на тестовом классе.

14

@Parameters

Описывает, как передавать параметры в метод @Test.

15

@Тестовое задание

Помечает класс или метод как часть теста.

@BeforeSuite

Аннотированный метод будет запущен только один раз до запуска всех тестов в этом наборе.

@AfterSuite

Аннотированный метод будет запущен только один раз после выполнения всех тестов в этом наборе.

@BeforeClass

Аннотированный метод будет запущен только один раз, прежде чем будет вызван первый тестовый метод в текущем классе.

@После школы

Аннотированный метод будет запущен только один раз после запуска всех тестовых методов в текущем классе.

@BeforeTest

Аннотированный метод будет запущен до запуска любого тестового метода, принадлежащего классам внутри тега <test>.

@AfterTest

Аннотированный метод будет запущен после запуска всех тестовых методов, принадлежащих классам внутри тега <test>.

@BeforeGroups

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

@AfterGroups

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

@BeforeMethod

Аннотированный метод будет запускаться перед каждым тестовым методом.

@AfterMethod

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

@DataProvider

Отмечает метод как предоставление данных для метода тестирования. Аннотированный метод должен возвращать объект [] [], где каждому объекту [] можно назначить список параметров метода тестирования. Метод @Test, который хочет получать данные от этого DataProvider, должен использовать имя dataProvider, равное имени этой аннотации.

@Factory

Помечает метод как фабрику, которая возвращает объекты, которые будут использоваться TestNG в качестве тестовых классов. Метод должен возвращать Object [].

@Listeners

Определяет слушателей на тестовом классе.

@Parameters

Описывает, как передавать параметры в метод @Test.

@Тестовое задание

Помечает класс или метод как часть теста.

Установка TestNG-Eclipse

Шаг 1 — Запустите Eclipse и создайте «Новый проект Java», как показано ниже.

Selenium IDE 53

Шаг 2 — Введите название проекта и нажмите «Далее».

Selenium IDE 103

Шаг 3 — Перейдите на вкладку «Библиотеки» и добавьте файл JAR Selenium Remote Control Server, нажав «Добавить внешние JAR», как показано ниже.

Selenium IDE 113

Шаг 4 — Добавленный файл JAR показан здесь. Нажмите «Добавить библиотеку».

Selenium IDE 104

Шаг 5 — Откроется диалоговое окно «Добавить библиотеку». Выберите «TestNG» и нажмите «Далее» в диалоговом окне «Добавить библиотеку».

Селен IDE 105

Шаг 6 — Добавлена ​​библиотека «TestNG», и она отображается, как показано ниже.

Selenium IDE 106

Шаг 7 — После создания проекта структура проекта будет такой, как показано ниже.

Selenium IDE 107

Шаг 8 — Щелкните правой кнопкой мыши по папке ‘src’ и выберите New >> Other.

Селен IDE 108

Шаг 9 — Выберите «TestNG» и нажмите «Далее».

Selenium IDE 109

Шаг 10 — Выберите имя «Исходная папка» и нажмите «ОК».

Селен IDE 110

Шаг 11 — Выберите «Имя пакета», «Имя класса» и нажмите «Готово».

Selenium IDE 111

Шаг 12 — Будет отображен проводник пакетов и созданный класс.

Selenium IDE 112

Первый тест в TestNG

Теперь давайте начнем создавать сценарии с использованием TestNG. Давайте создадим сценарий для того же примера, который мы использовали для понимания WebDriver. Мы будем использовать демонстрационное приложение www.calculator.net и выполнять калькулятор процентов.

В следующем тесте вы заметите, что основного метода НЕТ, так как testNG будет управлять процессом выполнения программы. После инициализации драйвера он выполнит метод «@BeforeTest», затем «@Test», а затем «@AfterTest». Обратите внимание, что в классе может быть любое количество аннотаций «@Test», но «@BeforeTest» и «@AfterTest» могут появляться только один раз.

package TestNG;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;

import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class TestNGClass {
   WebDriver driver = new FirefoxDriver();
   
   @BeforeTest
   public void launchapp() {
      // Puts an Implicit wait, Will wait for 10 seconds before throwing exception
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      
      // Launch website
      driver.navigate().to("http://www.calculator.net");
      driver.manage().window().maximize();
   }
   
   @Test
   public void calculatepercent() {
      // Click on Math Calculators
      driver.findElement(By.xpath(".//*[@id='menu']/div[3]/a")).click();
      
      // Click on Percent Calculators
      driver.findElement(By.xpath(".//*[@id='menu']/div[4]/div[3]/a")).click();
      
      // Enter value 10 in the first number of the percent Calculator
      driver.findElement(By.id("cpar1")).sendKeys("10");
      
      // Enter value 50 in the second number of the percent Calculator
      driver.findElement(By.id("cpar2")).sendKeys("50");
      
      // Click Calculate Button
      driver.findElement(By.xpath(".//*[@id='content']/table/tbody/tr/td[2]/input")).click();
      
      // Get the Result Text based on its xpath
      String result =
         driver.findElement(By.xpath(".//*[@id='content']/p[2]/span/font/b")).getText();
      
      // Print a Log In message to the screen
      System.out.println(" The Result is " + result);
      
      if(result.equals("5")) {
         System.out.println(" The Result is Pass");
      } else {
         System.out.println(" The Result is Fail");
      }
   }
   
   @AfterTest
   public void terminatetest() {
      driver.close();
   }
}

выполнение

Для выполнения щелкните правой кнопкой мыши созданный XML и выберите «Запуск от имени» >> «TestNG Suite»

Селен IDE 189

Анализ результатов

Вывод выводится на консоль, и он будет выглядеть, как показано ниже. Вывод на консоль также имеет сводку по выполнению.

Selenium IDE 114

Результат TestNG также можно увидеть на другой вкладке. Нажмите на кнопку «HTML Report View», как показано ниже.

Селен IDE 115

Результат HTML будет отображаться, как показано ниже.

Селен IDE 117

Селен — Сетка

Selenium Grid — это инструмент, который распределяет тесты по нескольким физическим или виртуальным машинам, чтобы мы могли выполнять сценарии параллельно (одновременно). Это значительно ускоряет процесс тестирования в разных браузерах и на разных платформах, обеспечивая нам быструю и точную обратную связь.

Selenium Grid позволяет нам параллельно выполнять несколько экземпляров тестов WebDriver или Selenium Remote Control, использующих одну и ту же базу кода, поэтому код НЕ должен присутствовать в системе, которую они выполняют. Автономный пакет selenium-server включает в себя Hub, WebDriver и Selenium RC для выполнения сценариев в сетке.

Selenium Grid имеет концентратор и узел.

  • Концентратор — Концентратор также можно понимать как сервер, который выступает в качестве центральной точки, где будут запускаться тесты. Selenium Grid имеет только один концентратор и запускается на одной машине один раз.

  • Узел — Узлы — это экземпляры Selenium, которые подключены к концентратору, который выполняет тесты. В сетке может быть один или несколько узлов, которые могут быть любой ОС и могут содержать любой из поддерживаемых Selenium браузеров.

Концентратор — Концентратор также можно понимать как сервер, который выступает в качестве центральной точки, где будут запускаться тесты. Selenium Grid имеет только один концентратор и запускается на одной машине один раз.

Узел — Узлы — это экземпляры Selenium, которые подключены к концентратору, который выполняет тесты. В сетке может быть один или несколько узлов, которые могут быть любой ОС и могут содержать любой из поддерживаемых Selenium браузеров.

Архитектура

Следующая диаграмма показывает архитектуру Selenium Grid.

selenium_ide_121

Работа с сеткой

Для работы с Grid нам необходимо следовать определенным протоколам. Слушайте ниже основные шаги, вовлеченные в этот процесс —

  • Конфигурирование Хаба
  • Конфигурирование узлов
  • Разработайте сценарий и подготовьте файл XML
  • Выполнение теста
  • Анализ результатов

Давайте обсудим каждый из этих шагов подробно.

Конфигурирование Хаба

Шаг 1 — Загрузите последнюю версию автономного файла JAR Selenium Server с http://docs.seleniumhq.org/download/ . Загрузите его, нажав на версию, как показано ниже.

selenium_ide_45

Шаг 2 — Запустите Hub, запустив Selenium Server с помощью следующей команды. Теперь мы будем использовать порт 4444 для запуска концентратора.

Примечание. Убедитесь, что на порту № 4444 не запущены другие приложения.

java -jar selenium-server-standalone-2.25.0.jar -port 4444 -role hub -nodeTimeout 1000

selenium_ide_122

Шаг 3 — Теперь откройте браузер и перейдите по URL-адресу http // localhost: 4444 из концентратора (система, в которой вы выполнили шаг № 2).

selenium_ide_123

Шаг 4 — Теперь нажмите на ссылку «консоль» и нажмите «Просмотр конфигурации». Конфигурация концентратора будет отображаться следующим образом. На данный момент у нас нет никаких узлов, поэтому мы не сможем увидеть детали.

selenium_ide_124

Конфигурирование узлов

Шаг 1 — Войдите в узел (где вы хотите выполнить сценарии) и поместите «selenium-server-standalone-2.42.2» в папку. Нам нужно указать на JAR-сервер selenium-server при запуске узлов.

Шаг 2 — Запустите FireFox Node, используя следующую команду:

java -jar D:\JAR\selenium-server-standalone-2.42.2.jar
   -role node -hub http://10.30.217.157:4444/grid/register
   -browser browserName = firefox -port 5555

Куда,

D: \ JAR \ selenium-server-standalone-2.42.2.jar = Расположение автономного файла Jar Selenium Server (на компьютере узла)

http://10.30.217.157:4444 = IP-адрес концентратора, а 4444 — порт концентратора

browserName = firefox (Параметр для указания имени браузера на узлах)

5555 = Порт, на котором будет запущен и запущен узел Firefox.

selenium_ide_125

Шаг 3 — После выполнения команды вернитесь в Хаб. Перейдите к URL — http://10.30.217.157:4444, и теперь концентратор будет отображать присоединенный к нему узел.

selenium_ide_126

Шаг 4 — Теперь давайте запустим узел Internet Explorer. Для запуска узла IE нам необходимо загрузить драйвер Internet Explorer на компьютере узла.

Шаг 5 — Чтобы загрузить драйвер Internet Explorer, перейдите по адресу http://docs.seleniumhq.org/download/ и загрузите соответствующий файл в зависимости от архитектуры вашей ОС. После того, как вы загрузили, разархивируйте exe-файл и поместите в него папку, к которой нужно обращаться при запуске узлов IE.

selenium_ide_131

Шаг 6 — Запустите IE, используя следующую команду.

C:\>java -Dwebdriver.ie.driver = D:\IEDriverServer.exe
   -jar D:\JAR\selenium-server-standalone-2.42.2.jar
   -role webdriver -hub http://10.30.217.157:4444/grid/register
   -browser browserName = ie,platform = WINDOWS -port 5558

Куда,

D: \ IEDriverServer.exe = Расположение загруженного драйвера IE (на компьютере узла)

D: \ JAR \ selenium-server-standalone-2.42.2.jar = Расположение автономного файла Jar Selenium Server (на компьютере узла)

http://10.30.217.157:4444 = IP-адрес концентратора, а 4444 — порт концентратора

browserName = ie (параметр для указания имени браузера на узлах)

5558 = Порт, на котором должен быть запущен IE Node.

selenium_ide_127

Шаг 7 — После выполнения команды вернитесь в Хаб. Перейдите к URL-адресу — http://10.30.217.157:4444, и теперь концентратор отобразит присоединенный к нему узел IE.

selenium_ide_128

Шаг 8 — Давайте теперь запустим Chrome Node. Для запуска узла Chrome нам необходимо загрузить драйвер Chrome на компьютере узла.

Шаг 9. Чтобы загрузить драйвер Chrome, перейдите по адресу http://docs.seleniumhq.org/download/, а затем перейдите в область «Драйверы сторонних обозревателей» и щелкните номер версии «2.10», как показано ниже.

selenium_ide_132

Шаг 10 — Загрузите драйвер в зависимости от типа вашей ОС. Мы выполним его в среде Windows, поэтому мы будем загружать драйвер Windows Chrome. После того, как вы загрузили, разархивируйте исполняемый файл и поместите его в папку, к которой нужно обращаться при запуске узлов Chrome.

selenium_ide_133

Шаг 11 — Запустите Chrome, используя следующую команду.

C:\>java -Dwebdriver.chrome.driver = D:\chromedriver.exe 
   -jar D:\JAR\selenium-server-standalone-2.42.2.jar 
   -role webdriver -hub  http://10.30.217.157:4444/grid/register 
   -browser browserName = chrome, platform = WINDOWS -port 5557

Куда,

D: \ chromedriver.exe = Расположение загруженного драйвера chrome (на компьютере узла)

D: \ JAR \ selenium-server-standalone-2.42.2.jar = Расположение автономного файла Jar Selenium Server (на компьютере узла)

http://10.30.217.157:4444 = IP-адрес концентратора, а 4444 — порт концентратора

browserName = chrome (Параметр для указания имени браузера на узлах)

5557 = Порт, на котором будет работать хром-узел.

selenium_ide_129

Шаг 12 — После выполнения команды вернитесь в Хаб. Перейдите к URL-адресу — http://10.30.217.157:4444, и теперь концентратор отобразит присоединенный к нему узел Chrome.

selenium_ide_130

Разработайте сценарий и подготовьте файл XML

Шаг 1 — Мы разработаем тест с использованием TestNG. В следующем примере мы запустим каждый из этих браузеров с помощью удаленного webDriver. Он может передавать свои возможности драйверу, чтобы у драйвера была вся информация для выполнения на узлах.

Параметр браузера будет передан из файла «XML».

package TestNG;

import org.openqa.selenium.*;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;

import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

import java.net.URL;
import java.util.concurrent.TimeUnit;
import java.net.MalformedURLException;

public class TestNGClass {
   public WebDriver driver;
   public String URL, Node;
   protected ThreadLocal<RemoteWebDriver> threadDriver = null;
   
   @Parameters("browser")
   @BeforeTest
   public void launchapp(String browser) throws MalformedURLException {
      String URL = "http://www.calculator.net";
      
      if (browser.equalsIgnoreCase("firefox")) {
         System.out.println(" Executing on FireFox");
         String Node = "http://10.112.66.52:5555/wd/hub";
         DesiredCapabilities cap = DesiredCapabilities.firefox();
         cap.setBrowserName("firefox");
         
         driver = new RemoteWebDriver(new URL(Node), cap);
         // Puts an Implicit wait, Will wait for 10 seconds before throwing exception
         driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
         
         // Launch website
         driver.navigate().to(URL);
         driver.manage().window().maximize();
      } else if (browser.equalsIgnoreCase("chrome")) {
         System.out.println(" Executing on CHROME");
         DesiredCapabilities cap = DesiredCapabilities.chrome();
         cap.setBrowserName("chrome");
         String Node = "http://10.112.66.52:5557/wd/hub";
         driver = new RemoteWebDriver(new URL(Node), cap);
         driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
         
         // Launch website
         driver.navigate().to(URL);
         driver.manage().window().maximize();
      } else if (browser.equalsIgnoreCase("ie")) {
         System.out.println(" Executing on IE");
         DesiredCapabilities cap = DesiredCapabilities.chrome();
         cap.setBrowserName("ie");
         String Node = "http://10.112.66.52:5558/wd/hub";
         driver = new RemoteWebDriver(new URL(Node), cap);
         driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
         
         // Launch website
         driver.navigate().to(URL);
         driver.manage().window().maximize();
      } else {
         throw new IllegalArgumentException("The Browser Type is Undefined");
      }
   }
   
   @Test
   public void calculatepercent() {
      // Click on Math Calculators
      driver.findElement(By.xpath(".//*[@id = 'menu']/div[3]/a")).click();     	
      
      // Click on Percent Calculators
      driver.findElement(By.xpath(".//*[@id = 'menu']/div[4]/div[3]/a")).click();
      
      // Enter value 10 in the first number of the percent Calculator
      driver.findElement(By.id("cpar1")).sendKeys("10");
      
      // Enter value 50 in the second number of the percent Calculator
      driver.findElement(By.id("cpar2")).sendKeys("50");
      
      // Click Calculate Button
      // driver.findElement(By.xpath(".//*[@id = 'content']/table/tbody/tr/td[2]/input")).click();
      // Get the Result Text based on its xpath
      String result =
         driver.findElement(By.xpath(".//*[@id = 'content']/p[2]/span/font/b")).getText();
      
      // Print a Log In message to the screen
      System.out.println(" The Result is " + result);
      
      if(result.equals("5")) {
         System.out.println(" The Result is Pass");
      } else {
         System.out.println(" The Result is Fail");
      }
   }
   
   @AfterTest
   public void closeBrowser() {
      driver.quit();
   }
}

Шаг 2 — Параметр Browser будет передан с использованием XML. Создайте XML в папке проекта.

selenium_ide_134

Шаг 3 — Выберите «Файл» из «Общие» и нажмите «Далее».

selenium_ide_135

Шаг 4 — Введите имя файла и нажмите «Готово».

selenium_ide_136

Шаг 5 — TestNg.XML создается в папке проекта, как показано ниже.

selenium_ide_137

Шаг 6 — Содержимое файла XML показано ниже. Мы создаем 3 теста и помещаем их в набор и упоминаем параллельный = «тесты», чтобы все тесты выполнялись параллельно.

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name = "Suite" parallel = "tests">

   <test name = "FirefoxTest">
   <parameter name = "browser" value = "firefox" />
      <classes>
         <class name = "TestNG.TestNGClass" />
      </classes>
   </test>

   <test name = "ChromeTest">
   <parameter name = "browser" value = "chrome" />
      <classes>
         <class name = "TestNG.TestNGClass" />
      </classes>
   </test>

   <test name = "IETest">
   <parameter name = "browser" value = "ie" />
      <classes>
         <class name = "TestNG.TestNGClass" />
      </classes>
   </test>
   
</suite>

Выполнение теста

Шаг 1 — Выберите созданный XML; щелкните правой кнопкой мыши и выберите «Запуск от имени» >> «TestNG Suite».

selenium_ide_139

Шаг 2 — Теперь откройте узел, где мы запустили все узлы браузера. Вы увидите все три браузера одновременно.

selenium_ide_140

Анализ результатов

Шаг 1 — По завершении выполнения мы можем проанализировать результат, как и любое другое выполнение. Сводка результатов печатается в консоли, как показано на следующем снимке.

selenium_ide_142

Шаг 2 — Перейдите на вкладку «Результаты работающего пакета», и TestNG отобразит сводку результатов, как показано ниже.

selenium_ide_141

Шаг 3 — После генерации HTML мы сможем увидеть результаты теста в формате HTML.