TL;DR

  • Robot Framework: Keyword-driven тест-фреймворк, использует библиотеки для автоматизации
  • Selenium: Библиотека браузерной автоматизации, требует программирования
  • Связь: Robot Framework + SeleniumLibrary = keyword-driven web тестирование
  • Для не-программистов: Robot Framework (читаемый синтаксис, без кодирования)
  • Для разработчиков: Selenium с Python/Java (больше контроля, гибкости)
  • Лучшее из обоих: Используй Robot Framework когда важна читаемость тестов

Время чтения: 8 минут

Robot Framework и Selenium часто сравнивают, но это разные инструменты, работающие вместе. Selenium — библиотека браузерной автоматизации. Robot Framework — фреймворк тест-автоматизации, который может использовать Selenium для web тестирования.

Понимание Разницы

Что такое Selenium?

Selenium — библиотека браузерной автоматизации:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://example.com")
element = driver.find_element(By.ID, "login")
element.click()

Требует программирования и даёт прямой контроль браузера.

Что такое Robot Framework?

Robot Framework — keyword-driven тест-фреймворк:

*** Test Cases ***
User Can Login Successfully
    Open Browser    https://example.com    chrome
    Click Element    id=login
    Input Text    id=username    testuser
    Input Text    id=password    secret
    Click Button    Submit
    Page Should Contain    Welcome

Использует человеко-читаемые keywords. Для web тестирования использует SeleniumLibrary, который оборачивает Selenium.

Быстрое Сравнение

ФункцияRobot FrameworkSelenium
ТипТест-фреймворкБиблиотека автоматизации
СинтаксисKeyword-drivenПрограммный код
ЯзыкиKeywords (Python-based)Python, Java, C#, JS
Кривая обученияПроще (без кодирования)Сложнее (требует кодирования)
ГибкостьСредняяВысокая
ЧитаемостьОчень высокаяЗависит от качества кода
Web тестированиеЧерез SeleniumLibraryНапрямую
API тестированиеЧерез RequestsLibraryНужна отдельная библиотека

Сравнение Примеров Тестов

Чистый Selenium (Python)

import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

class TestLogin:
    def setup_method(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(10)

    def teardown_method(self):
        self.driver.quit()

    def test_successful_login(self):
        self.driver.get("https://example.com/login")

        username = self.driver.find_element(By.ID, "username")
        username.send_keys("testuser")

        password = self.driver.find_element(By.ID, "password")
        password.send_keys("secret")

        self.driver.find_element(By.ID, "submit").click()

        WebDriverWait(self.driver, 10).until(
            EC.presence_of_element_located((By.CLASS_NAME, "welcome"))
        )

        assert "Welcome" in self.driver.page_source

Robot Framework с SeleniumLibrary

*** Settings ***
Library    SeleniumLibrary

*** Variables ***
${URL}        https://example.com/login
${BROWSER}    chrome

*** Test Cases ***
Successful Login
    [Documentation]    User can log in with valid credentials
    Open Browser    ${URL}    ${BROWSER}
    Input Text    id=username    testuser
    Input Password    id=password    secret
    Click Button    id=submit
    Wait Until Page Contains    Welcome
    [Teardown]    Close Browser

Тесты Robot Framework более читаемы для нетехнических stakeholders.

Архитектура

Как Они Работают Вместе

Robot Framework (тест-фреймворк)
        ↓
SeleniumLibrary (обёртка)
        ↓
Selenium WebDriver (браузерная автоматизация)
        ↓
Браузер (Chrome, Firefox и др.)

SeleniumLibrary переводит keywords Robot Framework в команды Selenium.

Когда Выбрать Robot Framework

  1. Нетехнические тестировщики — keyword синтаксис не требует программирования
  2. Читаемость для stakeholders — BA и PM могут читать тесты
  3. Acceptance тестирование — behavior-driven стиль хорошо подходит
  4. Многоцелевое тестирование — web, API, mobile с разными библиотеками
  5. Быстрый онбординг — новые члены команды быстрее становятся продуктивными

Когда Выбрать Чистый Selenium

  1. Команды разработчиков — предпочитают код вместо keywords
  2. Сложная логика — циклы, условия, кастомные ожидания
  3. Максимальный контроль — нужен низкоуровневый доступ к браузеру
  4. Существующая кодовая база — есть Python/Java тест-инфраструктура
  5. Производительность — немного быстрее без overhead фреймворка

Комбинирование Сильных Сторон

Кастомные Keywords в Robot Framework

Можно создавать кастомные Python keywords для сложной логики:

# custom_keywords.py
from robot.api.deco import keyword
from selenium.webdriver.support.ui import WebDriverWait

@keyword('Wait For Element And Click')
def wait_for_element_and_click(driver, locator, timeout=10):
    element = WebDriverWait(driver, timeout).until(
        lambda d: d.find_element(*locator)
    )
    element.click()
*** Settings ***
Library    SeleniumLibrary
Library    custom_keywords.py

*** Test Cases ***
Complex Test
    Open Browser    https://example.com    chrome
    Wait For Element And Click    id=dynamic-button

Лучшее из обоих миров: читаемые тесты со сложной логикой когда нужно.

За Пределами Web Тестирования

Библиотеки Robot Framework

БиблиотекаНазначение
SeleniumLibraryWeb браузерное тестирование
RequestsLibraryAPI тестирование
AppiumLibraryМобильное тестирование
DatabaseLibraryТестирование баз данных
SSHLibraryТестирование удалённых серверов

Robot Framework — универсальный фреймворк, не только для web.

Экосистема Selenium

ИнструментНазначение
Selenium WebDriverБраузерная автоматизация
Selenium GridРаспределённое тестирование
Selenium IDEЗапись/воспроизведение

Selenium фокусируется специфично на браузерной автоматизации.

FAQ

Robot Framework лучше Selenium?

Они служат разным целям и работают вместе. Robot Framework — тест-фреймворк, предоставляющий структуру, отчётность и keyword-driven синтаксис. Selenium — библиотека браузерной автоматизации. Для web тестирования Robot Framework использует Selenium через SeleniumLibrary. Выбирай Robot Framework для читаемости и доступности не-программистам, чистый Selenium для максимального контроля и предпочтения разработчиков.

Может Robot Framework заменить Selenium?

Нет, Robot Framework использует Selenium под капотом для web тестирования через SeleniumLibrary. Они комплементарные инструменты. Robot Framework предоставляет структуру тест-фреймворка (тест-кейсы, keywords, отчётность), тогда как Selenium обеспечивает собственно браузерную автоматизацию. Нельзя делать web тестирование с Robot Framework без какой-либо браузерной библиотеки.

Что легче изучить?

Robot Framework проще для не-программистов. Его keyword-driven синтаксис читается как простой английский: “Click Button Submit”. Selenium требует знания программирования на Python, Java или другом языке. Однако разработчики часто находят Selenium более интуитивным, поскольку это просто код. Выбирай исходя из бэкграунда команды.

Использовать Robot Framework с Selenium?

Используй Robot Framework с SeleniumLibrary когда:

  • Нетехническим stakeholders нужно читать/писать тесты
  • Важна читаемость и документация тестов
  • Хочешь тесты в стиле acceptance testing

Используй чистый Selenium когда:

  • Команда предпочитает код
  • Нужна сложная программная логика
  • Хочешь максимальный контроль над взаимодействием с браузером

Смотрите также