Учебники

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

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, а также их синтаксис.

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

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