Selenium автоматизация браузера в Python | Изучаем Selenium

Selenium — это бесплатная и открытая библиотека для автоматизированного тестирования веб-приложений. Я предполагаю Если вы посетили этот сайт, скорее всего, вы хотя бы слышали и имеете представление о Selenium.

Что такое Selenium?

Библиотека первоначально была создана в 2004 году Джейсоном Хаггинсом, к которому впоследствии присоединились другие его коллеги из компании ThoughtWorks. Selenium поддерживает все основные браузеры, и тесты могут быть записаны на многих языках программирования, а также работать на платформах Windows, Linux и Macintosh.

Selenium 2 объединяется с другим тестовым фреймворком WebDriver (именно поэтому вы видите ‘seleniumwebdriver‘) во главе с Саймоном Стюартом в Google. Сегодня Саймон работает в FaceBook. Selenium 2.0 был выпущен в июле 2011 года.

Язык программирования для Selenium

Тесты могут быть написаны в нескольких языках программирования, таких как Java, C#, Python, JavaScript и Ruby. Весьма часто можно услышать высказывание типа "Это Java, поэтому мы также будем писать тесты на Java." Это не совсем правильно. Тестирование программного обеспечения заключается в том, соответствует ли работа программиста требованиям заказчика. В некотором смысле, тестеры представляют самих клиентов. Тестеры должны иметь больший вес при определении тестового синтаксиса, чем программисты. Плюс, зачем вам требовать, чтобы у ваших тестировщиков был один и тот же язык программирования?

Сценарные языки программирования, такие как Ruby и Python больше подходят для тестовых скриптов, чем компилируемые языки, такие как C# и Java.

Все примеры на этом сайте написаны в Selenium, в связке с Python. Это не означает, что этот материал предназначен только для тестеров / разработчиков, которые знают Python. В нижеприведенных примерах можно увидеть, что использование Selenium в различных языках программирования очень похоже. Как только вы овладеете одним, вы сможете применять его к другим довольно легко. Взгляните на простой тестовый сценарий Selenium в пяти разных языковых привязках: Java, C#, JavaScript, Ruby и Python.

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) {
        // Создаем новый экземпляр драйвера устройства html
        // Обратите внимание, что остальная часть кода зависит от интерфейса, не реализации.
        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)