Installation et introduction de l'outil d'automatisation open source Python Playwright

Table des matières

avant-propos

1. Introduction au dramaturge

2. Installation du dramaturge

3. Démonstration pratique

4. Résumé

Résumer:


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.

Je suppose que tu aimes

Origine blog.csdn.net/MXB_1220/article/details/131171823
conseillé
Classement