Instalación y uso del marco de prueba automatizado Dramaturgo

Recientemente, Microsoft abrió un proyecto de automatización muy poderoso llamado dramaturgo-python.

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

Dirección del proyecto: https://github.com/microsoft/playwright-python

Para los entusiastas de Python, hay un beneficio aún mayor: este proyecto es una herramienta de automatización pura para el lenguaje Python y puede lograr funciones automatizadas sin escribir una sola línea de código. ¡Suena tan formidable!

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

1. Introducción al dramaturgo

Playwright es una poderosa biblioteca de Python que utiliza solo una API para realizar automáticamente operaciones automatizadas en los principales navegadores como Chromium, Firefox y WebKit, y admite la ejecución tanto en modo sin cabeza como sin cabeza.

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

Sitio web oficial: https://playwright.dev/

Según la explicación en el sitio web oficial, Playwright se posiciona oficialmente como una verdadera herramienta de prueba web de un extremo a otro.

2. Instalación del dramaturgo

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

Paso 1, instale la biblioteca dependiente de dramaturgo-python (cabe tener en cuenta que la biblioteca de dramaturgo debe depender de Python3.7+ o superior)

#Esto puede ser pip/pip3, o ambos

pip3 install playwright
puede verificar la información de su versión de dependencia en https://pypi.org/project/playwright/.

Paso 2, instale los controladores del navegador principal

De esta manera, los controladores de los navegadores Chromeium, Firefox y Webkit se descargarán al local

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

python3 -m instalación de dramaturgo

Si desea verificar las funciones admitidas por 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

Como se puede ver en la información de ayuda de la línea de comandos, 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 generará automáticamente un script de código.

1) Grabar guión

Primero veamos las instrucciones del comando para grabar el script.

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 script de registro de codegen dramaturgo
--help documento de ayuda
-o directorio para generar scripts automatizados
--lenguaje de script de destino, incluidos JS y Python, los valores correspondientes son: python y javascript
-b especifican el controlador del navegador
. Por ejemplo, Quiero utilizar la búsqueda de baidu .com, impulsada por chromium, y guardar los resultados como un archivo Python de mikezhou.py.

# Usamos el siguiente comando para abrir el navegador Chrome y comenzar a grabar el script
# Especificamos el idioma de generación como: Python (Python predeterminado, opcional)
# Nombre del archivo guardado: mikezhou.py (opcional)
# Controlador del navegador: webkit (webkit predeterminado, opcional) Seleccionar)
# Finalmente, siga el sitio web de destino que desea abrir (el valor predeterminado es solo abrir el navegador, opcional)
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 acción en el navegador se traducirá automáticamente en código, como se muestra a continuación:

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:

2) Admite sincronización

La palabra clave para la sincronización es: sync_playwright

Por ejemplo, utilizamos tres núcleos de navegador para abrir el navegador en secuencia, luego buscar en Baidu, luego tomar una captura de pantalla de la interfaz de búsqueda y finalmente cerrar el navegador.

desde el momento importar sueño
desde dramaturgo importar sync_playwright

# Nota: El modo predeterminado es el modo sin cabeza
con sync_playwright() como p:
    # Corresponde a tres controladores de navegador
    para browser_type en [p.chromium, p.firefox, p.webkit]:

        # Especifique el modo principal para una fácil visualización
        browser = browser_type.launch(headless=False)
        page = browser.newPage()
        page.goto('http://baidu.com')

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)
  # 执行一次搜索操作
        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 incorporada de dramaturgo-python cubre básicamente operaciones de automatización comunes.

3) Soporte asincrónico

La palabra clave de sincronización asincrónica es: async_playwright. Las operaciones asincrónicas se pueden combinar con asyncio para realizar tres operaciones del 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

Lo que es aún más sorprendente es que el dramaturgo también puede admitir la emulación del navegador en el lado móvil. El siguiente es un fragmento de código proporcionado por el documento oficial, que simula el navegador Safari en el iPhone 11 Pro en una ubicación geográfica determinada: primero, navegue hasta 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) Soporte del marco Pytest

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

def test_playwright_is_visible_on_google(página):
    page.goto("https://www.google.com")
    page.type("input[name=q]", "Dramaturgo GitHub")
    page.click("input[type=submit ]")
    página.waitForSelector("text=microsoft/Dramaturgo")

Por supuesto, además de las funciones enumeradas anteriormente, existen usos más interesantes y los lectores interesados ​​pueden explorarlos por su cuenta.

4. Resumen

Playwright tiene muchas ventajas sobre los marcos de prueba automatizados existentes, como por ejemplo:

Navegador cruzado, compatible con Chromium, Firefox, WebKit;
sistema operativo cruzado, compatible con Linux, Mac, Windows;
puede proporcionar la función de grabar y generar código para liberar las manos;
se puede utilizar en terminales móviles;
la deficiencia actual es que el La ecología y la documentación no son muy completas, por ejemplo, no hay documentación API china, no hay buenos tutoriales ni ejemplos para aprender. Pero creo que a medida que más y más gente lo sepa, el futuro será cada vez mejor.

Finalmente, déjame contarte un pequeño secreto. Playwright es un marco de automatización en varios idiomas. Además de admitir Python, también admite Java, JS, etc. Se pueden desbloquear funciones más detalladas a través de proyectos oficiales ~

[Último en 2023] Pruebas automatizadas de Python, completa 60 proyectos prácticos en 7 días y le brinda información práctica durante todo el proceso. [Pruebas automatizadas/pruebas de interfaz/pruebas de rendimiento/pruebas de software]

Finalmente me gustaría agradecer a todos los que leyeron atentamente mi artículo, la reciprocidad siempre es necesaria, aunque no es algo muy valioso, si puedes usarlo, puedes tomarlo directamente:

Insertar descripción de la imagen aquí

Esta información debería ser el almacén de preparación más completo y completo para los amigos [de pruebas de software]. Este almacén también ha acompañado a decenas de miles de ingenieros de pruebas en el viaje más difícil. ¡Espero que también pueda ayudarlo a usted!

Supongo que te gusta

Origin blog.csdn.net/NHB456789/article/details/133206038
Recomendado
Clasificación