Друзья, которые занимались автоматизированным тестированием, я думаю, они все знают, что в автоматизированном веб-тестировании есть инструмент-артефакт автоматического тестирования: селен.
Объединение стандартного API WebDriver для написания сценариев автоматизации Python может освободить ваши руки и позволить сценарию выполнять указанные операции в веб-браузере вместо людей.
Хотяselenium
Иметь полную документацию,Но это также требует определенных затрат на обучение.,Есть еще некоторые пороги для чистого новичка.
недавно,Microsoft с открытым исходным кодомочень мощныйавтоматизация Проект называетсяplaywright-python,Адрес проекта:
https://github.com/microsoft/playwright-python
Он поддерживает основной Браузер.,Включать:Chrome
、Firefox
、Safari
、Microsoft Edge
ждать,Также поддерживаетБезголовый режим、Бег в безголовом режиме,и предоставилсинхронный
、асинхронный
из API, можно комбинировать с Pytest
Используется тестовая среда, которая поддерживает автоматическую запись сценариев на стороне браузера.
И для любителей Python,Есть большая польза,Этот проект представляет собой чистый инструмент автоматизации языка Python.,Это возможно, и вы можете реализовать автоматизированные функции, не написав ни единой строки кода.。звук,Это такая крепость!
Возможно, вам это покажется немного невероятным, неужели вам действительно не нужно писать ни строчки кода? Но это действительно так мощно. Давайте вместе посмотрим на этот артефакт.
Playwright — мощная библиотека Python.,Используйте только одинAPIможет выполняться автоматическиChromium
、Firefox
、WebKit
ждатьмейнстрим Браузеравтоматизациядействовать,и Также поддерживаетБезголовый режим、Режим направлениябегать。
Технология автоматизации от Playwright зеленая、Мощный、Надежный и быстрый,поддерживатьLinux
、Mac
а такжеWindows
действоватьсистема。
Официальный сайт:
https://playwright.dev/
Пояснение с официального сайта,Официально предоставленоPlaywright
Позиционирование – это действительноизWebИнструменты комплексного тестирования。
Playwright — мощный инструмент, но этапы его установки очень просты и требуют всего 2 шага:
Нет. 1 шаг, установка playwright-python Зависимые библиотеки (Следует отметить, что для библиотеки драматурга требуется Python 3.7+ или выше)
# Установить Зависимые библиотеки
➜ ~ 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 будут загружены на локальный
# Установите драйвер Браузера (процесс установки немного медленный, наберитесь терпения)
➜ ~ 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
поддерживатьиз Функция, Вы можете ввести его прямо в командной строке:
➜ ~ 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
поддерживатьиз Функция相当丰富!
Как упоминалось в начале, для использования Playwright не нужно писать ни строчки кода. Нам нужно только вручную управлять браузером, и он запишет наши операции, а затем автоматически сгенерирует сценарий кода.
3.1 Скрипт записи
Давайте сначала посмотрим на инструкции команды для записи скрипта.
➜ ~ 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
в
Например, я хочу выполнить поиск на baidu.com, использовать драйвер Chromium и сохранить результаты в виде файла python mikezhou.py.
# Открываем его следующей командой Chrome Браузер начать запись сценария
# Укажите язык генерации: Python (Python по умолчанию, необязательно).
# Имя сохраненного файла: mikezhou.py (необязательно).
# Драйвер браузера: webkit (вебкит по умолчанию, необязательно)
# Наконец, перейдите на целевой веб-сайт, который нужно открыть (по умолчанию просто открывается Браузер, необязательно).
python3 -m playwright codegen --target python -o 'mikezhou.py' -b chromium https://www.baidu.com
После ввода командной строки браузер автоматически откроется, и вы увидите, что каждое действие в браузере будет автоматически переведено в код, как показано ниже:
наконец,автоматизация Скрипт будет сгенерирован автоматически,сохранить в файлmikezhou.py
, И все вышеперечисленные ручные операции автоматически преобразуются в код:
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, затем сделать снимок экрана интерфейса поиска и, наконец, закрыть браузер.
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Трое одновременно Браузердействовать。
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, затем выполните позиционирование и сделайте снимок экрана.
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 для создания примера официального сайта:
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")
Конечно, помимо перечисленных выше функций, есть и более интересные варианты использования, и заинтересованные читатели могут изучить их самостоятельно.
Playwright имеет множество преимуществ перед существующими системами автоматического тестирования, например:
Текущий недостаток заключается в том, что экосистема и документация не очень полны. Например, нет документации API на китайском языке, а также нет хороших руководств и примеров для обучения. Но я верю, что по мере того, как все больше и больше людей узнают об этом, будущее будет становиться все лучше и лучше.
Напоследок позвольте мне открыть вам небольшой секрет,Playwright представляет собой межъязыковую среду автоматизации, которая, помимо поддержки Python, также поддерживает Java и JS. Подождите, более подробные функции можно разблокировать через официальные проекты!
————Книги по теме————
▊ «Практическое руководство по автоматизированному тестированию: робот Framework + Python от мастера до эксперта》
Автор сценария Чжоу Цзиньцзянь («Безумный мастер»)
Эта книга охватывает большую часть знаний по автоматизированному тестированию. Она не только богата по содержанию и логически логична, но также богата графикой и ярким языком. Подходит для людей, которые интересуются технологиями тестирования или в настоящее время занимаются работой по тестированию (не ограничиваясь ручным тестированием, автоматическим тестированием, разработкой тестов и управлением тестированием).
Цель написания этой книги — не просто рассказать читателям, как использовать инструмент автоматического тестирования. Мы надеемся, что читатели смогут улучшить свои технические знания после изучения содержания этой книги и избавиться от простого ручного тестирования. и станьте тестировщиком новой эры. Отличный инженер-испытатель.
▲ Отсканируйте QR-код, чтобы получить подробную информацию ▲
Если вам понравилась эта статья, добро пожаловать Смотрим丨Оставить сообщение丨Поделиться в Moments Три подряд
Рекомендуемые горячие статьи
Лучшая книга Дубана по управлению бизнесом 2020 года «Начни заново 3» поможет вам вырваться из внутренней спирали.
Суперподробная интерпретация интерфейса Java
Какие новые технологии появятся в «Киберпанке 2077»? Несколько процедур письменных тестов алгоритмов, объясненных в одном пункте.
▼Нажмите, чтобы прочитать оригинальный текст и узнать подробности курса!