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 для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.