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 Framework | Selenium |
|---|---|---|
| Тип | Тест-фреймворк | Библиотека автоматизации |
| Синтаксис | 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
- Нетехнические тестировщики — keyword синтаксис не требует программирования
- Читаемость для stakeholders — BA и PM могут читать тесты
- Acceptance тестирование — behavior-driven стиль хорошо подходит
- Многоцелевое тестирование — web, API, mobile с разными библиотеками
- Быстрый онбординг — новые члены команды быстрее становятся продуктивными
Когда Выбрать Чистый Selenium
- Команды разработчиков — предпочитают код вместо keywords
- Сложная логика — циклы, условия, кастомные ожидания
- Максимальный контроль — нужен низкоуровневый доступ к браузеру
- Существующая кодовая база — есть Python/Java тест-инфраструктура
- Производительность — немного быстрее без 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
| Библиотека | Назначение |
|---|---|
| SeleniumLibrary | Web браузерное тестирование |
| RequestsLibrary | API тестирование |
| 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 когда:
- Команда предпочитает код
- Нужна сложная программная логика
- Хочешь максимальный контроль над взаимодействием с браузером
Смотрите также
- Robot Framework Tutorial - Полное руководство по RF
- Selenium Tutorial - Основы WebDriver
- Selenium vs Playwright - Современная альтернатива
- Test Automation Tutorial - Основы автоматизации
