Guía de inicio rápido para Automation Artifact Playwright

Playwright es una nueva generación de herramientas de prueba automatizadas lanzadas por Microsoft a principios de 2020. En comparación con Selenium, que es actualmente el más utilizado, puede realizar automáticamente operaciones automatizadas en navegadores convencionales como Chromium, Firefox y WebKit utilizando solo una API. Como herramienta de automatización pura para el lenguaje Python, la automatización se puede realizar más rápidamente en las pruebas de regresión.

1. ¿Por qué elegir dramaturgo?

1.1 Ventajas del dramaturgo

(1) Selenium necesita operar el navegador a través de WebDriver; Playwright interactúa con el navegador a través de herramientas de desarrollador y la instalación es simple y no requiere la instalación de varios controladores.

(2) Playwright admite casi todos los idiomas y no depende de varios controladores. Se inicia más rápido llamando al navegador integrado.

(3) Selenium se basa en el protocolo HTTP (comunicación unidireccional) y Playwright se basa en Websocket (comunicación bidireccional) para obtener automáticamente la situación real del navegador.

(4) El dramaturgo espera automáticamente.

  • Espere a que aparezca el elemento (al posicionar el elemento, espere 30 segundos automáticamente, el tiempo de espera se puede personalizar, en milisegundos)
  • Esperar a que ocurra un evento

1.2 Limitaciones conocidas

(1) Playwright no es compatible con versiones anteriores de Microsoft Edge o IE11. Es compatible con el nuevo Microsoft Edge (en Chromium), por lo que no se aplican proyectos con requisitos estrictos de versión del navegador.

(2) Los sitios web que requieren certificados SSL para acceder no pueden registrarse y el proceso debe ubicarse y escribirse por separado.

(3) La prueba del terminal móvil simula el dispositivo móvil a través de un navegador de escritorio (equivalente a su propio simulador) y no puede controlar el dispositivo real.

2. Uso del dramaturgo

2.1 Instalación

(1) Instale las bibliotecas dependientes de Playwright (Playwright admite la sintaxis Async\Await, por lo que se requiere Python3.7+)

pip install playwright

(2) Instale archivos de controlador para Chromium, Firefox, WebKit y otros navegadores (navegador integrado)

python -m playwright install

2.2 Grabación automática

(1) Escriba --help en la línea de comando para ver todas las opciones que se pueden seguir

python -m playwright codegen --help

(2) Comience a grabar desde la página de inicio http://xingzheai.cn

python -m playwright codegen https://xingzheai.cn/

(3) Abra http://xingzheai.cn , use el controlador Chromium y guarde el resultado como un archivo Python my.py

python -m playwright codegen --target python -o 'my.py' -b chromium https://xingzheai.cn/
  • -target: especifica el lenguaje para generar scripts, hay dos tipos: JS y Python, el predeterminado es Python
  • -b: especificar el controlador del navegador
  • -o: guarda el script grabado en un archivo

2.3 Escritura personalizada

(1) Posicionamiento del elemento

  • Seleccione un solo elemento: querySelector(motor=cuerpo)
  • Seleccione varios elementos: querySelectorAll(motor=cuerpo)
  • Seleccione un solo elemento y espere automáticamente: waitForSelector(motor=cuerpo)
De los 8 métodos de posicionamiento de By, el número real es 4
  • id, nombre, nombre de etiqueta, nombre de clase (java y pythona clasifican estos 4 tipos como CSS)
  • xpath, texto de enlace, texto de enlace parcial, selector css
El protocolo webDriver especificado por el estándar W3C tiene 5 métodos de posicionamiento
  • CSS, texto del enlace, texto del enlace parcial, nombre de etiqueta, XPath
El dramaturgo resume los selectores en 3 tipos
  • CSS, XPATH (admite expresiones y funciones lógicas), TEXTO

(2) Reglas de selección

  • CSS: selector de ID, selector de clases, selector de elementos, selector de atributos, selector de comodines, selector jerárquico.
  • XPath: lenguaje de ruta XML, que navega en documentos XML a través de "identificadores de ruta" y también se puede utilizar en lenguajes similares a XML (HTML).
  • Texto: el contenido estructurado (html, xml, json) utiliza concordancia aproximada (ignorando mayúsculas y minúsculas, ignorando espacios iniciales y finales, buscando subcadenas) y concordancia exacta, y el contenido no estructurado utiliza concordancia regular.

(3) Operaciones comunes sobre elementos.

  • Cuadro de selección desplegable: selectOpion, value, labei, index
  • Carga de archivos: setInputFiles, archivo único, archivos múltiples, carga con arrastrar y soltar
  • Clic del mouse: clic, dbclick
  • Arrastre del mouse: abajo, arriba
  • Movimiento del mouse: mover
  • Pantalla táctil: etiqueta
  • Tecla del teclado: presione
  • Captura de pantalla y grabación de pantalla: captura de pantalla, grabar vídeo

2.4 Intercepción de red (interfaz simulada), los ejemplos son los siguientes:

page = context.newPage()
def Whether_intercept() -> bool:
    return True  #进行拦截
# return False #不进行拦截

def handler(route:Route):
    print(route.request.url)
    #正常访问
    # route.continue_()
    #拒绝访问
    # route.abort("网络拦截")
    # 重定向到非目标地址
    route.fulfill(
        status=302,
        headers={
            'Location' : "https://xingzheai.cn/"
        }
    )
page.route(Whether_intercept,handler)

2.5 Ejecución sincrónica, el ejemplo es el siguiente:

#依次打开三个浏览器,前往行者官网,截图后退出。
from playwright import sync_playwright with sync_playwright() as p:
    for browser_type in [p.chromium, p.firefox, p.webkit]:
         # 指定为有头模式,Ture为无头模式
        browser = browser_type.launch(headless=False)
        page = browser.newPage()
        page.goto('https://xingzheai.cn/')
        # 等待页面加载完全后截图
        page.waitForSelector("text=智能内容审核")
        page.screenshot(path=f'example-{browser_type.name}.png')
        browser.close()

2.6 Ejecución asincrónica, los ejemplos son los siguientes:

#同时进行三个浏览器操作
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()
         page = await browser.newPage()
         await page.goto('https://xingzheai.cn/')
         await page.waitForSelector("text=智能内容审核")
         await page.screenshot(path=f'example-{browser_type.name}.png')
         await browser.close()
         asyncio.get_event_loop().run_until_complete(main())

2.7 Combinación de Pytest, el ejemplo es el siguiente:

Instalación: pip install pytest-playwright

def test_playwright(page):
    page.goto("https://xingzheai.cn/")
    with page.expect_popup() as popup_info:         
    page.click('text="智能内容审核"')         
    assert "智能内容审核" == element.textContent()

2.8 Operación de terminal móvil, los ejemplos son los siguientes:

Actualmente hay pocos modelos de simulación compatibles; consulte: Lista de dispositivos de simulación

from time import sleep
from playwright import sync_playwright  
with sync_playwright() as p:
    GalaxyS5 = p.devices['Galaxy S5']
    browser = p.chromium.launch(headless=False)
    context = browser.newContext(**GalaxyS5)
    page = context.newPage()
    page.goto('https://xingzheai.cn/')
    page.click('text="智能内容审核"')
    # 截图
    # page.screenshot(path='colosseum-GalaxyS5.png')
    sleep(10)
    browser.close()

3. Resumen

Como nueva generación de herramientas de prueba automatizadas, Playwright se ha mejorado integralmente en términos de facilidad de uso y practicidad en comparación con Selenium. Es simple pero no simple, creo que usar esta herramienta puede ayudarnos a mejorar la eficiencia de la automatización.

Supongo que te gusta

Origin blog.csdn.net/z1521695011/article/details/131393014
Recomendado
Clasificación