Table des matières
avant-propos
Microsoft a ouvert un projet d'automatisation très puissant appelé playwright-python
Il prend en charge les navigateurs grand public, notamment : Chrome, Firefox, Safari, Microsoft Edge, etc. Il prend également en charge l'exécution en mode sans tête et en mode tête , et fournit des API synchrones et asynchrones, qui peuvent être utilisées conjointement avec le framework de test Pytest et prend en charge la navigation. Enregistrement automatique des scripts côté serveur.
Pour les amateurs de Python, il y a un autre avantage plus grand. Ce projet est un pur outil . Il peut réaliser des fonctions d'automatisation sans écrire une seule ligne de code . Cela ressemble à une forteresse!
Vous trouverez peut-être cela un peu incroyable, n'avez-vous vraiment pas besoin d'écrire une ligne de code ? Mais c'est vraiment si puissant. Examinons cet artefact ensemble.
Groupe d'échange d'apprentissage sur les tests automatisés Python : un ensemble complet de matériel d'apprentissage de CV d'entretien sur les tests automatisés à obtenir qr?_wv=1027&k=DhOSZDNS -qzT5QKbFQMsfJ7DsrFfKpOF&authKey=eBt%2BF%2FBK81lVLcsLKaFqnvDAVA8IdNsGC7J0YV73w8V%2FJpdbby66r7vJ1rsPIifg&noverify=0&group_code=198 408628
1. Introduction au dramaturge
Playwright est une puissante bibliothèque Python qui peut exécuter automatiquement des opérations d'automatisation de navigateur courantes telles que Chromium, Firefox et WebKit avec une seule API, et prend en charge l'exécution en mode sans tête et en mode tête en même temps.
La technologie d'automatisation fournie par Playwright est verte, puissante, fiable et rapide, prenant en charge les systèmes d'exploitation Linux, Mac et Windows.
Site officiel:
D'après l'explication sur le site officiel, le positionnement officiel de Playwright est un véritable outil de test Web de bout en bout .
2. Installation du dramaturge
Playwright est puissant, mais ses étapes d'installation sont très simples, ne nécessitent que 2 étapes :
Étape 1, installez la bibliothèque de dépendances playwright-python (il convient de noter que la bibliothèque playwright doit s'appuyer sur Python3.7+ ou supérieur)
#Cela peut être pip/pip3, ou les deux
pip3 install playwright
Vous pouvez vérifier ses informations de version de dépendance sur https://pypi.org/project/playwright/.
Étape 2, installez les pilotes de navigateur grand public
De cette manière, les pilotes de navigateur Chromeium, Firefox et Webkit seront téléchargés sur le
# Installez le pilote du navigateur (le processus d'installation est un peu lent, soyez patient)
python3 -m playwright install
Si vous souhaitez vérifier les fonctions supportées par Playwright, vous pouvez saisir directement sur la ligne de commande :
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
Il ressort des informations d'aide de la ligne de commande que Playwright prend en charge de nombreuses fonctions !
3. Démonstration pratique
Comme mentionné au début, il n'est pas nécessaire d'écrire une ligne de code pour utiliser Playwright, nous n'avons qu'à faire fonctionner manuellement le navigateur, il enregistrera nos opérations, puis générera automatiquement des scripts de code.
1) Enregistrer le scénario
Regardons d'abord la description de la commande du script d'enregistrement
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
dans:
- python -m dramaturge codegen script d'enregistrement
- --help documentation d'aide
- -o répertoire pour générer des scripts d'automatisation
- --langage de script cible, y compris JS et Python, les valeurs correspondantes sont : python et javascript
- -b spécifie le pilote du navigateur
Par exemple, je souhaite effectuer une recherche sur baidu.com, utiliser le pilote chromium et enregistrer le résultat dans un fichier python de mikezhou.py.
# 我们通过下面命令打开 Chrome 浏览器开始录制脚本
# 指定生成语言为:Python(默认Python,可选)
# 保存的文件名:mikezhou.py(可选)
# 浏览器驱动:webkit(默认webkit,可选)
# 最后跟着要打开的目标网站(默认仅仅是打开浏览器,可选)
python3 -m playwright codegen --target python -o 'mikezhou.py' -b chromium https://www.baidu.com
Une fois la ligne de commande entrée, le navigateur s'ouvrira automatiquement, et vous pourrez alors voir que chaque mouvement sur le navigateur sera automatiquement traduit en code, comme indiqué ci-dessous :
Groupe d'échange d'apprentissage sur les tests automatisés Python : un ensemble complet de matériel d'apprentissage de CV d'entretien sur les tests automatisés à obtenir qr?_wv=1027&k=DhOSZDNS -qzT5QKbFQMsfJ7DsrFfKpOF&authKey=eBt%2BF%2FBK81lVLcsLKaFqnvDAVA8IdNsGC7J0YV73w8V%2FJpdbby66r7vJ1rsPIifg&noverify=0&group_code=198 408628
Enfin, le script d'automatisation sera automatiquement généré et enregistré dans le fichier mikezhou.py, et toutes les opérations manuelles ci-dessus seront automatiquement converties en code :
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)
2) Prise en charge de la synchronisation
Le mot clé pour la synchronisation est : sync_playwright
Par exemple, nous utilisons trois cœurs de navigateur pour ouvrir le navigateur à tour de rôle, puis cliquer sur Baidu, puis prendre une capture d'écran de l'interface de recherche et enfin fermer le navigateur
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')
# 休眠3s
sleep(3)
# 关闭浏览器
browser.close()
Il convient de souligner que l'API intégrée de playwright-python comprend essentiellement des opérations d'automatisation courantes.
3) Prise en charge asynchrone
Le mot clé de la synchronisation asynchrone est : async_playwright, l'opération asynchrone peut être combinée avec asyncio pour effectuer trois opérations de navigateur en même temps.
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())
4) Prise en charge du terminal mobile
De plus, le dramaturge peut également prendre en charge la simulation de navigateur mobile. Ce qui suit est un morceau de code fourni par le document officiel, simulant le navigateur Safari sur le téléphone mobile iphone 11 pro à un emplacement géographique donné, accédez d'abord à maps.google.com, puis effectuez un positionnement et prenez une capture d'écran.
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()
5) Prise en charge du cadre Pytest
De plus, il peut également être utilisé avec le plug-in pytest, en donnant un exemple du site officiel :
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")
Bien sûr, en plus des fonctionnalités énumérées ci-dessus, il existe des utilisations plus intéressantes que les lecteurs intéressés peuvent explorer par eux-mêmes.
4. Résumé
Par rapport aux frameworks de tests automatisés existants, le dramaturge présente de nombreux avantages, tels que :
- Multi-navigateur, prend en charge Chromium, Firefox, WebKit ;
- Système d'exploitation croisé, prend en charge Linux, Mac, Windows;
- Il peut fournir la fonction d'enregistrement et de génération de code, libérant les mains ;
- Disponible pour mobile ;
L'inconvénient actuel est que l'écologie et la documentation ne sont pas très complètes, comme par exemple pas de documentation API chinoise, pas de bons tutoriels et d'exemples pour apprendre. Mais je crois qu'au fur et à mesure que de plus en plus de gens le sauront, l'avenir ira de mieux en mieux.
Enfin, laissez-moi vous dire un petit secret. Playwright est un framework d'automatisation multilingue. En plus de prendre en charge Python, il prend également en charge Java, JS, etc. Des fonctions plus détaillées peuvent être déverrouillées via des projets officiels ~
Résumer:
Merci à tous ceux qui ont lu attentivement mon article ! ! !
J'ai personnellement trié certains documents techniques que j'ai compilés au cours de ma carrière de testeur de logiciels au cours des dernières années, notamment : des livres électroniques, des modules de CV, divers modèles de travail, des livres d'entretien, des projets d'auto-apprentissage, etc. Invitez tout le monde à cliquer sur la carte de visite ci-dessous pour l'obtenir gratuitement, ne la manquez pas.