Пример 1. Первый тест: открыть страницу и проверить заголовок
Тест — обычная pytest-функция, принимающая фикстуру page (её даёт плагин pytest-playwright).
# test_first.py
import re
from playwright.sync_api import Page, expect
def test_title(page: Page):
page.goto("https://playwright.dev/")
# to_have_title принимает строку или регулярное выражение
expect(page).to_have_title(re.compile("Playwright"))
Запуск: pytest test_first.py (headless) или pytest test_first.py --headed (видимый браузер).
Пример 2. Клик и проверка результата
Открываем сайт-песочницу и кликаем по ссылке. Авто-ожидания делают WebDriverWait ненужным.
# test_navigation.py
from playwright.sync_api import Page, expect
def test_get_started_link(page: Page):
page.goto("https://playwright.dev/")
# Playwright сам дождётся кликабельности ссылки
page.get_by_role("link", name="Get started").click()
# web-first проверка: ждёт появления заголовка
expect(page.get_by_role("heading", name="Installation")).to_be_visible()
Пример 3. Скриншот
# test_screenshot.py
from playwright.sync_api import Page
def test_make_screenshot(page: Page):
page.goto("https://example.com")
page.screenshot(path="example.png", full_page=True)
Пример 4. Запись теста через codegen
Откройте инспектор записи — кликайте по сайту, Playwright сгенерирует код теста:
# Терминал
playwright codegen https://playwright.dev/
В открывшемся окне выполняйте действия — в панели появится готовый Python-код, который можно скопировать в тест и причесать.
Совет: codegen — лучший способ узнать «правильный» локатор. Он предпочитает
get_by_role / get_by_text — устойчивые, user-facing локаторы (подробно в уроке 18).
Пример 5. Выбор браузера
# Терминал
pytest # Chromium (по умолчанию)
pytest --browser firefox # Firefox
pytest --browser webkit # WebKit (движок Safari)
pytest --headed --slowmo 500 # видимый браузер, замедление 0.5с
⚠️ Вывод и поведение зависят от версии Playwright. Проверяйте на странице запуска тестов.