Селен - Webdriver
WebDriver - это инструмент для автоматизации тестирования веб-приложений. Он широко известен как Selenium 2.0. WebDriver использует другую базовую структуру, в то время как Selenium RC использует JavaScript Selenium-Core, встроенный в браузер, который имеет некоторые ограничения. WebDriver напрямую взаимодействует с браузером без какого-либо посредника, в отличие от Selenium RC, который зависит от сервера. Он используется в следующем контексте -
Тестирование в нескольких браузерах, включая улучшенную функциональность для браузеров, которая не поддерживается Selenium RC (Selenium 1.0).
Обработка нескольких фреймов, нескольких окон браузера, всплывающих окон и предупреждений.
Сложная навигация по страницам.
Расширенная пользовательская навигация, такая как перетаскивание.
Элементы пользовательского интерфейса на основе AJAX.
Архитектура
WebDriver лучше всего объясняется простой схемой архитектуры, показанной ниже.
![](https://post.nghiatu.com/assets/tutorial/selenium/images/selenium_ide_92.jpg)
Selenium RC против WebDriver
Селен RC | Selenium WebDriver |
---|---|
Архитектура Selenium RC сложна, так как сервер должен быть запущен перед запуском теста. | Архитектура WebDriver проще, чем Selenium RC, поскольку он управляет браузером на уровне ОС. |
Сервер Selenium действует как посредник между браузером и командами Selenese. | WebDriver напрямую взаимодействует с браузером и использует движок браузера для управления им. |
Выполнение скрипта Selenium RC происходит медленнее, поскольку он использует Javascript для взаимодействия с RC. | WebDriver работает быстрее, так как напрямую взаимодействует с браузером. |
Selenium RC не может поддерживать автономное выполнение, так как для работы ему нужен настоящий браузер. | WebDriver может поддерживать автономное выполнение. |
Это простой и небольшой API. | Сложный и немного большой API по сравнению с RC. |
Менее объектно-ориентированный API. | Чисто объектно-ориентированный API. |
Невозможно протестировать мобильные приложения. | Может тестировать приложения для iPhone / Android. |
Создание сценариев с использованием WebDriver
Разберемся, как работать с WebDriver. Для демонстрации мы будем использоватьhttps://www.calculator.net/. Мы выполним «Процентный калькулятор», который находится в «Математическом калькуляторе». Мы уже скачали необходимые файлы JAR для WebDriver. Подробнее см. В главе «Настройка условий окружающей среды».
Step 1 - Запустите «Eclipse» из извлеченной папки Eclipse.
![](https://post.nghiatu.com/assets/tutorial/selenium/images/selenium_ide_75.jpg)
Step 2 - Выберите рабочую область, нажав кнопку «Обзор».
![](https://post.nghiatu.com/assets/tutorial/selenium/images/selenium_ide_76.jpg)
Step 3 - Теперь создайте «Новый проект» из меню «Файл».
![](https://post.nghiatu.com/assets/tutorial/selenium/images/selenium_ide_53.jpg)
Step 4 - Введите имя проекта и нажмите «Далее».
![](https://post.nghiatu.com/assets/tutorial/selenium/images/selenium_ide_77.jpg)
Step 5- Перейдите на вкладку "Библиотеки" и выберите все загруженные нами JAR-файлы. Добавьте ссылку на все файлы JAR библиотеки Selenium WebDriver Library, а также на selenium-java-2.42.2.jar и selenium-java-2.42.2-srcs.jar.
![](https://post.nghiatu.com/assets/tutorial/selenium/images/selenium_ide_78.jpg)
Step 6 - Пакет создан, как показано ниже.
![](https://post.nghiatu.com/assets/tutorial/selenium/images/selenium_ide_79.jpg)
Step 7 - Теперь щелкните пакет правой кнопкой мыши и выберите «Новый» >> «Класс», чтобы создать «класс».
![](https://post.nghiatu.com/assets/tutorial/selenium/images/selenium_ide_82.jpg)
Step 8 - Теперь назовите класс и сделайте его главной функцией.
![](https://post.nghiatu.com/assets/tutorial/selenium/images/selenium_ide_80.jpg)
Step 9 - Схема класса показана ниже.
![](https://post.nghiatu.com/assets/tutorial/selenium/images/selenium_ide_81.jpg)
Step 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();
}
}
Step 11 - Вывод вышеуказанного скрипта будет напечатан в консоли.
![](https://post.nghiatu.com/assets/tutorial/selenium/images/selenium_ide_83.jpg)
Наиболее часто используемые команды
В следующей таблице перечислены некоторые из наиболее часто используемых команд в WebDriver, а также их синтаксис.
Sr. No. | Команда и описание |
---|---|
1 | driver.get("URL") Чтобы перейти к приложению. |
2 | element.sendKeys("inputtext") Введите текст в поле ввода. |
3 | element.clear() Очистите содержимое поля ввода. |
4 | select.deselectAll() Отмените выбор всех ОПЦИЙ из первого ВЫБРАТЬ на странице. |
5 | select.selectByVisibleText("some text") Выберите ОПЦИЯ с вводом, указанным пользователем. |
6 | driver.switchTo().window("windowName") Перемещайте фокус из одного окна в другое. |
7 | driver.switchTo().frame("frameName") Переходите от кадра к кадру. |
8 | driver.switchTo().alert() Помогает в обработке предупреждений. |
9 | driver.navigate().to("URL") Перейдите к URL-адресу. |
10 | driver.navigate().forward() Чтобы двигаться вперед. |
11 | driver.navigate().back() Чтобы вернуться назад. |
12 | driver.close() Закрывает текущий браузер, связанный с драйвером. |
13 | driver.quit() Выходит из драйвера и закрывает все связанные окна этого драйвера. |
14 | driver.refresh() Обновляет текущую страницу. |