|
223 |
|
Настройка окружения
Создаём виртуальное окружение под проект:
virtualenv play_with_pwright
source play_with_pwright/bin/activate
Устанавливаем зависимости, а точнее модуль Playwright
:
pip3 install playwright
Далее внутри модуля устанавливаем необходимый браузер одной из следующих команд:
# chromium
python3 -m playwright install chromium
# firefox
python3 -m playwright install firefox
# все поддерживаемые браузеры
python3 -m playwright install
Настройка окружения завершена.
Взаимодействие с браузером
Пишем первый тест, создав файл first_pw_test.py
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
Playwright
предоставляет три импорта:
- from playwright.async_api
- from playwright.driver
- from playwright.sync_api
В данном случае мы воспользовались sync_api
, так как нет никаких причин использовать для этого примера асинхронные вызовы.
channel
- выбираем chrome или chromium (смотря, что установили ранее, если установлено что-то одно, параметр можно игнорировать)headless=False
- показывать браузерignore_https_errors=True
- игнорируем проблемы с сертификатами
Но ничто не мешает нам вызвать тот же тест асинхронно. Это может быть полезно, например, для ускорения выполнения тестов, когда у нас есть несколько сценариев и они могут выполняться параллельно, а точнее - независимо друг от друга.
Изменение размера окна
Размер можно задать на этапе инициализации браузера:
context = browser.new_context(ignore_https_errors=True, viewport={"width": 1920, "height": 1080})
Менять размер на уровне отдельной страницы в рамках теста возможно, но не рекомендуется:
page.set_viewport_size({"width": 640, "height": 480})
Подробное описание доступно в функции set_viewport_size
.
Альтернативные способы запуска браузера
В ранее приведённом примере для запуска браузера использовался контекстный менеджер:
with sync_playwright() as playwright:
pass
В тело которого передавался выполняемый код. Альтернативные способы, а также огромное количество прочей полезной информации, представлены на ресурсе: playwright.dev/python.
Другой способ запуска:
from playwright.sync_api import sync_playwright, Playwright
def run(playwright: Playwright):
chromium = playwright.chromium # or "firefox" or "webkit".
browser = chromium.launch()
page = browser.new_page()
page.goto("http://example.com")
# other actions...
browser.close()
with sync_playwright() as playwright:
run(playwright)
Ещё один способ:
from playwright.sync_api import sync_playwright
playwright = sync_playwright().start()
browser = playwright.chromium.launch()
page = browser.new_page()
page.goto("http://example.com")
browser.close()
playwright.stop()