Instalación e introducción de la herramienta de automatización de código abierto Python Playwright

Tabla de contenido

prefacio

1. Introducción al Dramaturgo

2. Instalación del dramaturgo

3. Demostración práctica

4. Resumen

Resumir:


prefacio

Microsoft ha abierto un proyecto de automatización muy poderoso llamado playwright-python

Es compatible con los principales navegadores, incluidos: Chrome, Firefox, Safari, Microsoft Edge, etc. También admite la ejecución en modo sin cabeza y modo con cabeza , y proporciona API síncronas y asíncronas, que se pueden usar junto con el marco de prueba Pytest y admite la navegación. Grabación automática de scripts en el lado del servidor.

Para los amantes de Python, hay otro beneficio mayor, este proyecto es una herramienta de automatización pura para el lenguaje Python , puede lograr funciones de automatización sin escribir una sola línea de código . ¡Parece una fortaleza!

Puede que le resulte un poco increíble, ¿realmente no necesita escribir una línea de código? Pero realmente es así de poderoso. Echemos un vistazo a este artefacto juntos.

  Grupo de intercambio de aprendizaje de pruebas automatizadas de Python: un conjunto completo de materiales de aprendizaje de reanudación de entrevistas de pruebas automatizadas para obtener Haga clic en el enlace para unirse al chat grupal [intercambio de pruebas automatizadas de Python]: http://qm.qq.com/cgi-bin/qm/ qr?_wv=1027&k=DhOSZDNS -qzT5QKbFQMsfJ7DsrFfKpOF&authKey=eBt%2BF%2FBK81lVLcsLKaFqnvDAVA8IdNsGC7J0YV73w8V%2FJpdbby66r7vJ1rsPIifg&noverify=0&group_code=19 8408628

 

1. Introducción al Dramaturgo

Playwright es una poderosa biblioteca de Python que puede ejecutar automáticamente las principales operaciones de automatización del navegador, como Chromium, Firefox y WebKit, con solo una API, y admite la ejecución en modo sin cabeza y modo con cabeza al mismo tiempo.

La tecnología de automatización proporcionada por Playwright es ecológica, potente, confiable y rápida, y es compatible con los sistemas operativos Linux, Mac y Windows.

Página web oficial:

 Según la explicación en el sitio web oficial, el posicionamiento oficial de Playwright es una verdadera herramienta de prueba web de extremo a extremo .

2. Instalación del dramaturgo

Playwright es poderoso, pero sus pasos de instalación son muy simples, solo necesita 2 pasos:

Paso 1, instale la biblioteca de dependencias playwright-python (debe tenerse en cuenta que la biblioteca playwright debe basarse en Python3.7+ o superior)

#Esto puede ser pip/pip3, o ambos

pip3 install playwright

Puede consultar la información de su versión de dependencia en https://pypi.org/project/playwright/.

Paso 2, instale los controladores de navegador principales

De esta forma, los controladores de los navegadores Chromeium, Firefox y Webkit se descargarán en el servidor local.

# Instale el controlador del navegador (el proceso de instalación es un poco lento, tenga paciencia)

python3 -m playwright install

Si desea verificar las funciones compatibles con Playwright, puede ingresar directamente en la línea de comando:

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

¡Se puede ver en la información de ayuda de la línea de comandos que Playwright admite muchas funciones!

3. Demostración práctica

Como se mencionó al principio, no es necesario escribir una línea de código para usar Playwright, solo necesitamos operar manualmente el navegador, registrará nuestras operaciones y luego generará automáticamente los scripts de código.

1) Grabar guión

Primero veamos la descripción del comando del script de grabación.

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

en:

  • python -m dramaturgo codegen guión de grabación
  • --help ayuda documentación
  • -o directorio para generar scripts de automatización
  • --lenguaje de secuencias de comandos de destino, incluidos JS y Python, los valores correspondientes son: python y javascript
  • -b especifica el controlador del navegador

Por ejemplo, quiero buscar en baidu.com, usar el controlador de cromo y guardar el resultado como un archivo 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

Después de ingresar la línea de comando, el navegador se abrirá automáticamente y luego podrá ver que cada movimiento en el navegador se traducirá automáticamente en código, como se muestra a continuación:

 

  Grupo de intercambio de aprendizaje de pruebas automatizadas de Python: un conjunto completo de materiales de aprendizaje de reanudación de entrevistas de pruebas automatizadas para obtener Haga clic en el enlace para unirse al chat grupal [intercambio de pruebas automatizadas de Python]: http://qm.qq.com/cgi-bin/qm/ qr?_wv=1027&k=DhOSZDNS -qzT5QKbFQMsfJ7DsrFfKpOF&authKey=eBt%2BF%2FBK81lVLcsLKaFqnvDAVA8IdNsGC7J0YV73w8V%2FJpdbby66r7vJ1rsPIifg&noverify=0&group_code=19 8408628

 

Finalmente, el script de automatización se generará automáticamente y se guardará en el archivo mikezhou.py, y todas las operaciones manuales anteriores se convertirán automáticamente en código:

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) sincronización de soporte

La palabra clave para la sincronización es: sync_playwright

Por ejemplo, usamos tres núcleos de navegador para abrir el navegador a su vez, luego hacemos clic en Baidu, luego tomamos una captura de pantalla de la interfaz de búsqueda y finalmente cerramos el navegador.

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()

Cabe señalar que la API integrada de playwright-python básicamente incluye operaciones de automatización comunes.

3) Soporte asíncrono

La palabra clave de la sincronización asíncrona es: async_playwright, la operación asíncrona se puede combinar con asyncio para realizar tres operaciones de navegador al mismo tiempo.

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) soporte de terminal móvil

Además, dramaturgo también puede admitir la simulación de navegador móvil. El siguiente es un fragmento de código proporcionado por el documento oficial, que simula el navegador Safari en el teléfono móvil iphone 11 pro en una ubicación geográfica determinada, primero navegue a maps.google.com, luego realice el posicionamiento y tome una captura de pantalla.

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) Compatibilidad con el marco Pytest

Además, también se puede usar con el complemento pytest, dando un ejemplo del sitio web oficial:

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")

Por supuesto, además de las funciones enumeradas anteriormente, hay usos más interesantes que los lectores interesados ​​pueden explorar por sí mismos.

4. Resumen

En comparación con los marcos de prueba automatizados existentes, dramaturgo tiene muchas ventajas, como:

  • Compatible con navegador cruzado, Chromium, Firefox, WebKit;
  • Sistema operativo cruzado, compatible con Linux, Mac, Windows;
  • Puede proporcionar la función de grabar y generar código, liberando manos;
  • Disponible para móvil;

La desventaja actual es que la ecología y la documentación no son muy completas, como que no hay documentación API en chino, no hay buenos tutoriales y ejemplos para aprender. Pero creo que a medida que más y más personas lo sepan, el futuro será cada vez mejor.

Finalmente, déjame contarte un pequeño secreto. Playwright es un marco de trabajo de automatización multilenguaje. Además de ser compatible con Python, también es compatible con Java, JS, etc. Se pueden desbloquear funciones más detalladas a través de proyectos oficiales ~

Resumir:

¡Gracias a todos los que leyeron mi artículo con atención! ! !

Personalmente, clasifiqué algunos materiales técnicos que compilé en mi carrera de prueba de software en los últimos años, que incluyen: libros electrónicos, módulos de currículum, varias plantillas de trabajo, libros de entrevistas, proyectos de autoaprendizaje, etc. Bienvenidos a todos a hacer clic en la tarjeta de presentación a continuación para obtenerla gratis, no se la pierdan.

Guess you like

Origin blog.csdn.net/MXB_1220/article/details/131171823