Автоматизация процессов в веб-приложениях - это важнейший аспект веб-разработки, позволяющий создавать более эффективные и менее трудоёмкие процессы. В последнее время инструмент Playwright набирает популярность среди разработчиков, обгоняя Selenium по скорости и гибкости. Это связано с его способностью выполнять тесты быстрее и поддерживать современные браузеры.
Гибкость и масштабируемость этого инструмента делают его привлекательным для разработчиков, которые стремятся создавать сложные и разнообраные тесты, включая более продвинутые кейсы (скрейперы, парсеры). Современный подход к автоматизации браузеров через Playwright позволяет симулировать пользовательское взаимодействие и тестировать приложения в реалистичных условиях.
В этой статье мы рассмотрим основные концепции Playwright, его возможности и способы использования для автоматизации разных кейсов. И конечно будут примеры кода и советы, которые помогут вам начать использовать этот инструмент для автоматизации браузеров и улучшения качества ваших приложений.
Что такое Playwright?
Playwright - это инструмент для автоматизации браузеров, который позволяет разработчикам создавать автоматизированные тесты и скрипты для взаимодействия с веб-страницами. Он предназначен для автоматизации браузеров, таких как Google Chrome, Mozilla Firefox, Microsoft Edge и Safari.
На главной странице документации Playwright вы можете заметить, что сами разработчики отмечают его особенность:
- Любой браузер - любая платформа - один API.
- Кроссбраузерность. Playwright поддерживает все современные движки рендеринга, включая Chromium, WebKit и Firefox.
- Кроссплатформенность. Тестируйте на Windows, Linux и macOS, локально или на CI, с поддержкой отображения GUI или в режиме headless.
- Мультиязыковая реализация. Используйте API Playwright в TypeScript, JavaScript, Python, .NET, Java.
- Тестирование мобильного веба. Нативная мобильная эмуляция Google Chrome для Android и Mobile Safari. Один и тот же движок рендеринга работает на рабочем столе и в облаке.
- Нет ограничений. Браузеры запускают контент разного происхождения в независимых процессах. Можно в рамках одного браузера сразу тестировать множество вкладок, несколько источников или пользовательских вводов.
- Доверенные события. Наведение элементов, взаимодействие с динамическими элементами управления, создание доверенных событий. Playwright использует реальный конвейер ввода браузера, неотличимый от реального пользователя.
- Поддержка Shadow DOM для более тщательного тестирования своих веб-приложений.
Playwright реализован с помощью Node.js, имеет свои драйверы интеграции браузеров, что обеспечивает высокую производительность и гибкость. В отличие от других инструментов, таких как Selenium, Playwright не использует протокол WebDriver и не зависит от него. Благодаря этому, этот инструмент предоставляет более высокую скорость и стабильность выполнения тестов, а также простой и интуитивный API для всех типов браузеров.
Ходит на разных тематических форумах слушок, что благодаря Playwright делают антидетект браузеры, а потом прикручивают подписку на сервис ... зарабатывают. (с) Анон
Установка и настройка Playwright
Установка и настройка Playwright - это простой процесс, который не требует много времени и усилий. Для начала, вам нужно установить Python на вашем компьютере, если он еще не установлен. После этого, вы можете установить Playwright с помощью pip (менеджера пакетов Python).
Для установки Playwright, вы можете использовать следующую команду:
pip install playwright
Когда основная библиотека установлена, необходимо скачать необходимый вам драйвер для работы с браузером.
# Устанавливает все браузеры
playwright install
# Установка конкретного браузера
playwright install chromium
playwright install firefox
playwright install webkit
После установки Playwright, вы можете начать использовать его для автоматизации браузеров. Для этого, вам нужно создать новый файл с расширением .py и импортировать Playwright в него.
from playwright.sync_api import sync_playwright
После этого, вы можете начать использовать Playwright для автоматизации своих задач или написания текст-кейсов. Для начала, вы можете создать новый экземпляр браузера и открыть новую страницу.
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("https://example.com")
page.screenshot(path="screenshot.png")
browser.close()
Стоит отметить, что Playwright поддерживает и асинхронную работу.
from playwright.sync_api import async_playwright
Далее, вы можете использовать различные методы и функции Playwright для автоматизации браузера. Например, вы можете использовать метод page.click() для клика по элементу на странице, или метод page.fill() для заполнения формы.
Основные концепции Playwright
Playwright основан на нескольких основных концепциях, которые позволяют разработчикам создавать автоматизированные тесты и скрипты для взаимодействия с веб-страницами. Ниже приведены основные концепции Playwright:
- Браузер - это основной объект, который используется для взаимодействия с веб-страницами.
- Страница - это объект, который представляет собой отдельную веб-страницу. Страница может быть открыта с помощью метода browser.new_page().
- Контекст - это объект, который представляет собой отдельный контекст браузера, где настраиваются общие правила, которые используются всеми страницами. Контекст может быть создан с помощью метода browser.new_context().
- Фрейм - это объект, который представляет собой отдельный фрейм на веб-странице (iframe). Фрейм может быть доступен с помощью метода page.frame().
- Элемент (Element) - это объект, который представляет собой отдельный элемент на веб-странице, с которым нужно взаимодействовать. Элемент может быть доступен с помощью метода page.query_selector().
- Событие - это объект, который представляет собой отдельное событие, которое происходит на веб-странице. Событие может быть обработано с помощью метода page.on().
- Ожидание (wait/waitable) - метод, который позволяет разработчикам ждать определенного события или условия на веб-странице. Может быть использовано с помощью метода page.wait_for().
- Клик - метод, который позволяет разработчикам кликнуть по элементу на веб-странице. Клик может быть использовано с помощью метода element.click().
- Заполнить - метод, который позволяет разработчикам заполнить форму или добавить конкретное значение в элемент на веб-странице. Заполнить может быть использовано с помощью метода .fill().
Playwright предоставляет простой и интуитивный API для работы с этими концепциями. Рассмотрим простой сценарий, при котором мы протестируем Google-форму поиска и реализуем своего рода кейс автоматизации:
from playwright.sync_api import sync_playwright
def google_search():
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page()
# Открываем Google
page.goto('https://google.com')
# Принимаем cookies если есть
if page.locator('text=Accept all').is_visible():
page.click('text=Accept all')
# Вводим поисковый запрос
page.fill('input[name="q"]', 'Playwright Python')
page.press('input[name="q"]', 'Enter')
# Собираем результаты
results = page.locator('.g')
for i in range(await results.count()):
title = await results.nth(i).locator('h3').text_content()
print(f"Найдено: {title}")
browser.close()
if __name__ == "__main__":
google_search()
Как итог, мы получаем список заголовков в выдаче на Google странице.
Документация у данного инструмента очень хорошая, подробно и в полном объеме закрывает чуть ли не все потребности.
Теперь рассмотри простой пример, как мы можем протестировать функционал сайта.
import re
from playwright.sync_api import Page, expect
def test_has_title(page: Page):
page.goto("https://playwright.dev/")
# Ожидаем, что заголовок «будет содержать» подстроку со значением "Playwright".
expect(page).to_have_title(re.compile("Playwright"))
def test_get_started_link(page: Page):
page.goto("https://playwright.dev/")
# Кликаем на элемент "ссылка", где в атрибуте "name" есть значение "Get started".
page.get_by_role("link", name="Get started").click()
# Ожидаем, когда страница будет иметь заголовок с названием "Installation".
expect(page.get_by_role("heading", name="Installation")).to_be_visible()
Здесь стоит отметить, что в Playwright ждя каждого метода есть аргумент в виде timeout, где задаётся время ожидания прежде чем пойдёт работа дальше.
Для запуска тестов через pytest нужно выполнить команду
pip install pytest-playwright
Далее просто выполнить команду
pytest
❤️ Если хотите максимально подробно ознакомиться с текущим инструментом, то переходите на сайт COD-REG.RU, там вы сможете лучше узнать что такое Playwright и подробнее рассмотреть примеры работы.
Преимущества и недостатки Playwright
Playwright - это мощный инструмент для автоматизации браузеров, который имеет как преимущества, так и недостатки.
Преимущества:
- Высокая скорость: работает быстрее, чем другие инструменты для автоматизации браузеров, такие как Selenium.
- Простой API: имеет простой и интуитивный API, который позволяет разработчикам создавать автоматизированные тесты и скрипты легко.
- Поддержка нескольких браузеров: поддерживает несколько браузеров, включая Google Chrome, Mozilla Firefox, Microsoft Edge, Safari.
- Возможность использования в headless-режиме, что упрощает тестирование и автоматизацию.
- Возможность использования с несколькими языками программирования: JavaScript, TypeScript, Python, Java и .NET.
Недостатки:
- Ограниченная поддержка старых и других браузеров: не поддерживает старые браузеры, такие как Internet Explorer и ряд специфичных, например, Arc, Brave и т.д. не смотря на то, что используют они движок Chromium, не исключено, что разработчики могут добавить ряд специфичных функций, которые не удастся протестировать.
- Ограниченная поддержка некоторых функций браузеров: не поддерживает некоторые функции браузеров, такие как геолокация и доступ к камере.
- Требуется дополнительная настройка: требует дополнительной настройки для работы с некоторыми браузерами и функциями.
Заключение
В этой статье мы рассмотрели основные концепции Playwright, его преимущества и недостатки, и как его использовать для автоматизации браузеров. Мы также рассмотрели примеры кода, которые помогут вам начать использовать Playwright для автоматизации и написании тест-кейсов.
Если вы еще не пробовали Playwright, мы рекомендуем вам начать использовать его для автоматизации браузеров. С его помощью вы сможете создавать быстрые и надежные автоматизированные тесты и скрипты, и улучшить качество ваших веб-приложений.
Если у вас есть какие-либо вопросы или комментарии, пожалуйста, не стесняйтесь оставлять их ниже.
Ссылка на подробную статью: https://cod-reg.ru/posts/chto-takoe-playwright-i-kak-ego-ispolzovat/