Webdriver — це популярний інструмент управління браузером, який максимально найближче імітує дії користувача.

Webdriver, звісно від Selenium підтримує багато мов програмування (C#, Java, JavaScript, PHP, Python, Ruby, R, Perl та ін.) Selenium Webdriver — теж проект з відкритим висхідним кодом, має велике коммюніті користувачів, й тому працює доволі справно.

Selenium Webdriver можна використовувати як для автоматизованого тестування веб додатків, так і для виконання інших рутинних завдань, пов’язаних з роботою в інтернеті. Нещодавно, наприклад на Безкоштовному тижні Python у нашому коммюніті #QualityAssuranceGroup ми вчилися застосовувати Selenium Webdriver для задач скрепінгу. Переглянути приклад цих скриптів, які ми практикували разом із студентами за посиланням тутка

І приклад з інтернету, як Selenium наприклад тестують Performance.

Суть, як працює Selenium Webdriver ?

Selenium Webdriver безпосередньо викликає команди браузера, використовуючи рідне для кожного конкретного браузера API. Як відбуваються ці виклики і які функції вони виконують залежить від конкретного браузера. Запускати скрипти з ним можна як локально, так і віддалено, .

Для роботи з Selenium Webdriver необхідно:

  1. Браузер — це реальний браузер, роботу якого користувач хоче автоматизувати. Chrome, Firefox, Opera, Safari, IE тощо певної версії, встановленого на певній ОС зі своїми налаштуваннями (за замовчуванням або кастомними). Хоча Webdriver може працювати і з “несправжніми” браузерами, але детально про них розповімо іншого разу, обіцяємо.
  2. Driver — найважливіша сутність, запускає браузер і відправляє йому команди, а також закриває його. Насправді є веб сервером. У кожного браузера свій driver. Пов’язано це з тим, що у кожного браузера свої відмінні команди управління і реалізовані вони по-своєму. Як налаштувати, знайти і завантажити список доступних драйверів за посиланням:
  3. Скрипт — це тест, який містить набір команд певною мовою програмування для драйвера браузера. Такі скрипти використовують Selenium Webdriver bindings (готові бібліотеки, про які ми щойно згадували), доступні користувачам на різних мовах.
  4. Webelement — друга важлива сутність, що представляє собою абстракцію над веб-елементами (кнопки, посилання, інту та ін.).
  5. By — абстракція над локатором веб елемента. Цей клас інкапсулює інформацію про селектор (наприклад, CSS), а також сам локатор елемента, тобто усю інформацію, необхідну для знаходження потрібного елемента на сторінці. Більш детальніше: Типи елементів, пошук за локаторами

Приклади запуску і перших тестів на різних мовах програмування:

Selenium + Java

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class GoogleSearch {
public static void main(String[] args) {
// Створюємо новий екземпляр драйвера
// Зверніть увагу, що наступна частина коду залежить від інтерфейсу, а не реалізації.
WebDriver driver = new FirefoxDriver();
// А тепер для того, щоб відкрити Google.
driver.get("http://www.google.com");
// Найти элемент вводу тексту по його імені.
WebElement element = driver.findElement(By.name("q"));
// Вводимо щось для пошуку.
element.sendKeys("Hello Selenium WebDriver!");
// Натискаємо кнопку відправки.
element.submit();
// Перевіряємо заголовок сторінки.
System.out.println("Page title is: " + driver.getTitle());
}
}

Selenium + C#

using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Support.UI;
class GoogleSearch
{
static void Main()
{
// Створюємо новий экземпляр драйверу Firefox
IWebDriver driver = new FirefoxDriver();
// Відвідуємо сторінку Google.
driver.Navigate().GoToUrl("http://www.google.com");
// Знаходимо елемент за іменем.
IWebElement query = driver.FindElement(By.Name("q"));
// Вводимо щось для пошуку.
query.SendKeys("Hello Selenium WebDriver!");
query.Submit();
Console.WriteLine(driver.Title);
}
}

Javascript + Selenium

var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder()
.forBrowser('chrome')
.build();
driver.get('http://www.google.com/ncr');
driver.findElement(webdriver.By.name('q')).sendKeys('webdriver');
driver.findElement(webdriver.By.name('btnG')).click();
driver.wait(webdriver.until.titleIs('webdriver - Google Search'), 1000);
console.log(driver.title);

Ruby + Selenium

require "selenium-webdriver"
driver = Selenium::WebDriver.for :firefox
driver.navigate.to "http://www.google.com"
element = driver.find_element(:name, 'q')
element.send_keys "Hello Selenium WebDriver!"
element.submit
puts driver.title

Python + Selenium

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.google.com")
elem = driver.find_element_by_name("q")
elem.send_keys("Hello WebDriver!")
elem.submit()
print(driver.title)

Хочете спробувати відтворити ці скрипти? Тоді давайте налаштовувати потрібне середовище і вперед:

Related posts

Leave a Comment

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.