Порекомендуйте один из самых мощных артефактов автоматизации Python! Не нужно писать ни строчки кода!
Порекомендуйте один из самых мощных артефактов автоматизации Python! Не нужно писать ни строчки кода!

Друзья, которые занимались автоматизированным тестированием, я думаю, они все знают, что в автоматизированном веб-тестировании есть инструмент-артефакт автоматического тестирования: селен.

Объединение стандартного API WebDriver для написания сценариев автоматизации Python может освободить ваши руки и позволить сценарию выполнять указанные операции в веб-браузере вместо людей.

ХотяseleniumИметь полную документацию,Но это также требует определенных затрат на обучение.,Есть еще некоторые пороги для чистого новичка.

недавно,Microsoft с открытым исходным кодомочень мощныйавтоматизация Проект называетсяplaywright-python,Адрес проекта:

Язык кода:javascript
копировать
https://github.com/microsoft/playwright-python

Он поддерживает основной Браузер.,Включать:ChromeFirefoxSafariMicrosoft Edge ждать,Также поддерживаетБезголовый режимБег в безголовом режиме,и предоставилсинхронныйасинхронныйиз API, можно комбинировать с Pytest Используется тестовая среда, которая поддерживает автоматическую запись сценариев на стороне браузера.

И для любителей Python,Есть большая польза,Этот проект представляет собой чистый инструмент автоматизации языка Python.,Это возможно, и вы можете реализовать автоматизированные функции, не написав ни единой строки кода.。звук,Это такая крепость!

Возможно, вам это покажется немного невероятным, неужели вам действительно не нужно писать ни строчки кода? Но это действительно так мощно. Давайте вместе посмотрим на этот артефакт.

1. Знакомство с драматургом

Playwright — мощная библиотека Python.,Используйте только одинAPIможет выполняться автоматическиChromiumFirefoxWebKitждатьмейнстрим Браузеравтоматизациядействовать,и Также поддерживаетБезголовый режимРежим направлениябегать。

Технология автоматизации от Playwright зеленая、Мощный、Надежный и быстрый,поддерживатьLinuxMacа такжеWindowsдействоватьсистема。

Официальный сайт:

Язык кода:javascript
копировать
https://playwright.dev/

Пояснение с официального сайта,Официально предоставленоPlaywrightПозиционирование – это действительноизWebИнструменты комплексного тестирования。

2. Использование драматурга

2.1 Установка

Playwright — мощный инструмент, но этапы его установки очень просты и требуют всего 2 шага:

Нет. 1 шаг, установка playwright-python Зависимые библиотеки (Следует отметить, что для библиотеки драматурга требуется Python 3.7+ или выше)

Язык кода:javascript
копировать
# Установить Зависимые библиотеки

➜  ~ pip3 install playwright
Looking in indexes: https://pypi.douban.com/simple
Collecting playwright
  Downloading https://pypi.doubanio.com/packages/08/f0/9f937ccff3221685d4a8bd406649c85855b9b6a2fafe75920b02151b48e0/playwright-0.162.2-py3-none-macosx_10_13_x86_64.whl (58.2 MB)
     |████████████████████████████████| 58.2 MB 1.6 MB/s
Collecting greenlet==1.0a1
  Downloading https://pypi.doubanio.com/packages/aa/74/6e93515873829a8d894863bbae1d709405bdd50d66fdf239480cc9db0598/greenlet-1.0a1-cp38-cp38-macosx_10_9_x86_64.whl (86 kB)
     |████████████████████████████████| 86 kB 6.9 MB/s
Collecting typing-extensions
  Downloading https://pypi.doubanio.com/packages/60/7a/e881b5abb54db0e6e671ab088d079c57ce54e8a01a3ca443f561ccadb37e/typing_extensions-3.7.4.3-py3-none-any.whl (22 kB)
Collecting pyee>=8.0.1
  Downloading https://pypi.doubanio.com/packages/0d/0a/933b3931107e1da186963fd9bb9bceb9a613cff034cb0fb3b0c61003f357/pyee-8.1.0-py2.py3-none-any.whl (12 kB)
Installing collected packages: greenlet, typing-extensions, pyee, playwright
Successfully installed greenlet-1.0a1 playwright-0.162.2 pyee-8.1.0 typing-extensions-3.7.4.3

Можно найти вhttps://pypi.org/project/playwright/просмотреть этоиз Информация о версии зависимости。

Нет. 2 шаг, установкамейнстримиз Браузерводить машину

Таким образом, драйверы браузеров Chromeium, Firefox и Webkit будут загружены на локальный

Язык кода:javascript
копировать
# Установите драйвер Браузера (процесс установки немного медленный, наберитесь терпения)
➜  ~ python3 -m playwright install
Downloading chromium v827102 - 121.3 Mb [====================] 100% 0.0s
chromium v827102 downloaded to /Users/xxx/Library/Caches/ms-playwright/chromium-827102
Downloading firefox v1205 - 74.1 Mb [                    ] 1% 37767.9s

3.Если вы хотите просмотретьPlaywrightподдерживатьиз Функция, Вы можете ввести его прямо в командной строке:

Язык кода:javascript
копировать
➜  ~ python3 -m playwright help
Usage: index [options] [command]

Options:
  -V, --version                          output the version number
  -b, --browser <browserType>            browser to use, one of cr, chromium, ff, firefox, wk,
                                         webkit (default: "chromium")
  --color-scheme <scheme>                emulate preferred color scheme, "light" or "dark"
  --device <deviceName>                  emulate device, for example  "iPhone 11"
  --geolocation <coordinates>            specify geolocation coordinates, for example
                                         "37.819722,-122.478611"
  --lang <language>                      specify language / locale, for example "en-GB"
  --proxy-server <proxy>                 specify proxy server, for example "http://myproxy:3128" or
                                         "socks5://myproxy:8080"
  --timezone <time zone>                 time zone to emulate, for example "Europe/Rome"
  --timeout <timeout>                    timeout for Playwright actions in milliseconds (default:
                                         "10000")
  --user-agent <ua string>               specify user agent string
  --viewport-size <size>                 specify browser viewport size in pixels, for example "1280,
                                         720"
  -h, --help                             display help for command

Commands:
  open [url]                             open page in browser specified via -b, --browser
  cr [url]                               open page in Chromium
  ff [url]                               open page in Firefox
  wk [url]                               open page in WebKit
  codegen [options] [url]                open page and generate code for user actions
  screenshot [options] <url> <filename>  capture a page screenshot
  pdf [options] <url> <filename>         save page as pdf
  install                                Ensure browsers necessary for this version of Playwright
                                         are installed
  help [command]                         display help for command

Как видно из справочной информации командной строки,Playwrightподдерживатьиз Функция相当丰富!

3. Практическая демонстрация

Как упоминалось в начале, для использования Playwright не нужно писать ни строчки кода. Нам нужно только вручную управлять браузером, и он запишет наши операции, а затем автоматически сгенерирует сценарий кода.

3.1 Скрипт записи

Давайте сначала посмотрим на инструкции команды для записи скрипта.

Язык кода:javascript
копировать
➜  ~ python3 -m playwright codegen --help
Usage: index codegen [options] [url]

open page and generate code for user actions

Options:
  -o, --output <file name>  saves the generated script to a file
  --target <language>       language to use, one of javascript, python, python-async, csharp (default: "python")
  -h, --help                display help for command

Examples:

  $ codegen
  $ codegen --target=python
  $ -b webkit codegen https://example.com

в

  • python -m playwright codegen  Запись сценария
  • --help справка документация
  • -o Создать каталог автоматизации Скрипт
  • --target Скриптовый язык, в том числе JS и Python, соответствующие значения: python и javascript
  • -b  Укажите драйвер Браузера

Например, я хочу выполнить поиск на baidu.com, использовать драйвер Chromium и сохранить результаты в виде файла python mikezhou.py.

Язык кода:javascript
копировать
# Открываем его следующей командой Chrome Браузер начать запись сценария
# Укажите язык генерации: Python (Python по умолчанию, необязательно).
# Имя сохраненного файла: mikezhou.py (необязательно).
# Драйвер браузера: webkit (вебкит по умолчанию, необязательно)
# Наконец, перейдите на целевой веб-сайт, который нужно открыть (по умолчанию просто открывается Браузер, необязательно).
python3 -m playwright codegen --target python -o 'mikezhou.py' -b chromium https://www.baidu.com

После ввода командной строки браузер автоматически откроется, и вы увидите, что каждое действие в браузере будет автоматически переведено в код, как показано ниже:

наконец,автоматизация Скрипт будет сгенерирован автоматически,сохранить в файлmikezhou.py, И все вышеперечисленные ручные операции автоматически преобразуются в код:

Язык кода:javascript
копировать
from playwright import sync_playwright

def run(playwright):
    browser = playwright.chromium.launch(headless=False)
    context = browser.newContext()

    # Open new page
    page = context.newPage()

    # Go to https://www.baidu.com/
    page.goto("https://www.baidu.com/")

    # Click input[name="wd"]
    page.click("input[name=\"wd\"]")

    # Fill input[name="wd"]
    page.fill("input[name=\"wd\"]", «Трава большая»)

    # Press CapsLock
    page.press("input[name=\"wd\"]", "CapsLock")

    # Fill input[name="wd"]
    page.fill("input[name=\"wd\"]", «Практическое руководство по автоматизации теста» ")

    # Press Enter
    page.press("input[name=\"wd\"]", "Enter")
    # assert page.url() == "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%AE%9E%E6%88%98%E5%AE%9D%E5%85%B8%20&fenlei=256&rsv_pq=af40e9aa00012d5a&rsv_t=c659gpz2%2Fjri1SAoIXdT9gP%2BmrqufXzRtMSSAL0n0fv7GSoLF5vaiNVPA3U&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=38&rsv_sug1=22&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&inputT=8034&rsv_sug4=9153"

    # Close page
    page.close()

    # ---------------------
    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

3.2 Поддержка синхронизации

синхронныйиз Ключевое слово:sync_playwright

Например, мы используем три ядра браузера, чтобы последовательно открыть браузер, затем выполнить поиск в Baidu, затем сделать снимок экрана интерфейса поиска и, наконец, закрыть браузер.

Язык кода:javascript
копировать
from time import sleep
from playwright import sync_playwright

# ПРИМЕЧАНИЕ. По умолчанию используется Безголовый. режим
with sync_playwright() as p:
    # Соответствует трем драйверам Браузера соответственно
    for browser_type in [p.chromium, p.firefox, p.webkit]:

        # Обозначается как Режим направление, легко просматривать
        browser = browser_type.launch(headless=False)
        page = browser.newPage()
        page.goto('http://baidu.com')

        # Выполните операцию поиска
        page.fill("input[name=\"wd\"]", «Практическое руководство по автоматизации теста»")
        with page.expect_navigation():
            page.press("input[name=\"wd\"]", "Enter")

        # Подождите, пока страница загрузится полностью
        page.waitForSelector("text=Инструмент поиска")
        
        # скриншот
        page.screenshot(path=f'test-{browser_type.name}.png')

        # Сон 3 секунды
        sleep(3)

        # Закрыть Браузер
        browser.close()

Следует отметить, что,playwright-python встроенный API В основном охватывает общие автоматизированные операции.

3.3 Поддержка асинхронного режима

асинхронныйшагиз Ключевое слово:async_playwright,асинхронныйдействовать Можно комбинироватьasyncioТрое одновременно Браузердействовать。

Язык кода:javascript
копировать
import asyncio
from playwright import async_playwright

# Асинхронное выполнение
async def main():
    async with async_playwright() as p:
        for browser_type in [p.chromium, p.firefox, p.webkit]:
            # Обозначается как Режим направление, легко просматривать
            browser = await browser_type.launch(headless=False)
            page = await browser.newPage()

            await page.goto('http://baidu.com')

            # Выполните операцию поиска
            await page.fill("input[name=\"wd\"]", «Практическое руководство по автоматизации теста»")
            await page.press("input[name=\"wd\"]", "Enter")

            # Подождите, пока страница загрузится полностью
            await page.waitForSelector("text=Инструмент поиска")

            # скриншот
            await page.screenshot(path=f'test-{browser_type.name}.png')
            await browser.close()

asyncio.get_event_loop().run_until_complete(main())

3.4 Поддержка мобильного терминала

Еще более удивительно то, что драматург также может поддерживать эмуляцию браузера на мобильной стороне. Ниже приведен фрагмент кода, предоставленный официальной документацией, который имитирует браузер Safari на iPhone 11 pro в заданном географическом местоположении. Сначала перейдите на сайт maps.google.com, затем выполните позиционирование и сделайте снимок экрана.

Язык кода:javascript
копировать
from playwright import sync_playwright

with sync_playwright() as p:
    iphone_11 = p.devices['iPhone 11 Pro']
    browser = p.webkit.launch(headless=False)
    context = browser.newContext(
        **iphone_11,
        locale='en-US',
        geolocation={ 'longitude': 12.492507, 'latitude': 41.889938 },
        permissions=['geolocation']
    )
    page = context.newPage()
    page.goto('https://maps.google.com')
    page.click('text="Your location"')
    page.screenshot(path='colosseum-iphone.png')
    browser.close()

3.5 Поддержка платформы Pytest

Кроме того, его также можно использовать с плагином pytest для создания примера официального сайта:

Язык кода:javascript
копировать
def test_playwright_is_visible_on_google(page):
    page.goto("https://www.google.com")
    page.type("input[name=q]", "Playwright GitHub")
    page.click("input[type=submit]")
    page.waitForSelector("text=microsoft/Playwright")

Конечно, помимо перечисленных выше функций, есть и более интересные варианты использования, и заинтересованные читатели могут изучить их самостоятельно.

4. Резюме

Playwright имеет множество преимуществ перед существующими системами автоматического тестирования, например:

  • Кроссплатформенность, поддерживает Chromium.、Firefox、WebKit
  • Кросс-операционная система, поддерживает Linux, Mac, Windows.
  • Обеспечивает функции записи и генерации кода, чтобы освободить ваши руки.
  • Доступно для мобильных устройств

Текущий недостаток заключается в том, что экосистема и документация не очень полны. Например, нет документации API на китайском языке, а также нет хороших руководств и примеров для обучения. Но я верю, что по мере того, как все больше и больше людей узнают об этом, будущее будет становиться все лучше и лучше.

Напоследок позвольте мне открыть вам небольшой секрет,Playwright представляет собой межъязыковую среду автоматизации, которая, помимо поддержки Python, также поддерживает Java и JS. Подождите, более подробные функции можно разблокировать через официальные проекты!

————Книги по теме————

▊ «Практическое руководство по автоматизированному тестированию: робот Framework + Python от мастера до эксперта》

Автор сценария Чжоу Цзиньцзянь («Безумный мастер»)

Эта книга охватывает большую часть знаний по автоматизированному тестированию. Она не только богата по содержанию и логически логична, но также богата графикой и ярким языком. Подходит для людей, которые интересуются технологиями тестирования или в настоящее время занимаются работой по тестированию (не ограничиваясь ручным тестированием, автоматическим тестированием, разработкой тестов и управлением тестированием).

Цель написания этой книги — не просто рассказать читателям, как использовать инструмент автоматического тестирования. Мы надеемся, что читатели смогут улучшить свои технические знания после изучения содержания этой книги и избавиться от простого ручного тестирования. и станьте тестировщиком новой эры. Отличный инженер-испытатель.

▲ Отсканируйте QR-код, чтобы получить подробную информацию ▲

Язык кода:javascript
копировать
Если вам понравилась эта статья, добро пожаловать Смотрим丨Оставить сообщение丨Поделиться в Moments Три подряд

 Рекомендуемые горячие статьи  
Лучшая книга Дубана по управлению бизнесом 2020 года «Начни заново 3» поможет вам вырваться из внутренней спирали.
Суперподробная интерпретация интерфейса Java
Какие новые технологии появятся в «Киберпанке 2077»? Несколько процедур письменных тестов алгоритмов, объясненных в одном пункте.

▼Нажмите, чтобы прочитать оригинальный текст и узнать подробности курса!

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose