- Установка
- Структура проекта
- Инициализация Playwright и запуск браузера
- Базовая навигация
- Работа с элементами
- Скриншоты и PDF-файлы
- Работа с cookies
- Алерты и диалоговые окна
- Клавиатура и мышь
- Выполнение JS-кода
- Работа с фреймами
Установка
pip install playwright playwright install
Установка тестраннера
pip install pytest
Структура проекта
Важно создать упорядоченную и удобную структуру каталогов. Примерная структура проекта Playwright/Python:
project_name/ │ ├── tests/ │ ├── __init__.py │ ├── test_my_feature.py │ └── test_another_feature.py
В каталоге tests/ — тестовые скрипты. Каждый скрипт в идеале тестирует одну функцию или пользовательский flow.
Инициализация Playwright и запуск браузера
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page()
# Здесь вставляешь свой код
browser.close()
Навигация
# Переход по URL
page.goto('https://example.com')
# Перезагрузка страницы
page.reload()
# Вперед/назад по истории
page.goBack()
page.goForward()
Работа с элементами
# Кликнуть элемент
page.click('button')
# Ввести текст в поле ввода
page.type('input[name="username"]', 'your_username')
# Нажать клавишу Enter
page.press('input[name="password"]', 'Enter')
# Получить текстовое содержимое элемента
text = page.text_content('h1')
# Выбор опции в раскрывающемся списке
page.select_option('select', label='Option 1')
# Ожидание появления или видимости элементов
page.wait_for_selector('div#my-element', state='visible')
# Проверка, существует ли элемент
assert page.locator("button").is_visible()
# Проверка заголовка страницы
assert page.title() == "Expected Title"
Скриншоты и PDF
# Снять скриншот page.screenshot(path='screenshot.png') # Сгенерировать PDF page.pdf(path='document.pdf')
Работа с cookies
# Получить все файлы cookie cookies = page.cookies() # Установить cookie page.set_cookie(name='my_cookie', value='cookie_value') # Удалить файл cookie page.delete_cookie(name='my_cookie')
Алерты и диалоговые окна
# Обработка JS-алерта
page.on('dialog').accept()
page.on('dialog').dismiss()
Клавиатура и мышь
# Ввести текст
page.type('input', 'Hello, Playwright!')
# Нажать и отпустить клавишу
page.keyboard.press('Enter')
page.keyboard.release('Shift')
# Передвинуть мышь и кликнуть
page.mouse.move(100, 100)
page.mouse.click()
Выполнение (eval) Javascript-кода
# Выполнить JavaScript-код в контексте страницы
result = page.evaluate('1 + 2')
Фреймы
# Переход к фрейму по имени, id или индексу
page.frame(name='frameName')
page.frame(index=0)
# Выполнить код в контексте фрейма
frame = page.frame(index=0)
frame.evaluate('console.log("Hello from frame!")')