Instalação e introdução da ferramenta de automação de código aberto Python Playwright

Índice

prefácio

1. Introdução ao Dramaturgo

2. Instalação do dramaturgo

3. Demonstração prática

4. Resumo

Resumir:


prefácio

A Microsoft abriu o código de um projeto de automação muito poderoso chamado playwright-python

Ele suporta navegadores convencionais, incluindo: Chrome , Firefox , Safari, Microsoft Edge, etc. Gravação automática de scripts no lado do servidor.

Para os amantes do Python, há outro benefício maior. Este projeto é uma ferramenta de automação pura para a linguagem Python . Ele pode realizar funções de automação sem escrever uma única linha de código . Parece uma fortaleza!

Você pode achar um pouco inacreditável, você realmente não precisa escrever uma linha de código? Mas é realmente tão poderoso. Vamos dar uma olhada neste artefato juntos.

  Grupo de troca de aprendizado de teste automatizado Python: um conjunto completo de materiais de aprendizado de resumo de entrevista de teste automatizado para obter Clique no link para entrar no bate-papo do grupo [troca de teste automatizado de python]: http://qm.qq.com/cgi-bin/qm/ qr?_wv=1027&k=DhOSZDNS -qzT5QKbFQMsfJ7DsrFfKpOF&authKey=eBt%2BF%2FBK81lVLcsLKaFqnvDAVA8IdNsGC7J0YV73w8V%2FJpdbby66r7vJ1rsPIifg&noverify=0&group_code= 198408628

 

1. Introdução ao Dramaturgo

O Playwright é uma poderosa biblioteca Python que pode executar automaticamente as principais operações de automação do navegador, como Chromium, Firefox e WebKit, com apenas uma API e suporta a execução no modo headless e no modo head ao mesmo tempo.

A tecnologia de automação fornecida pela Playwright é verde, poderosa, confiável e rápida, suportando os sistemas operacionais Linux, Mac e Windows.

Website oficial:

 A partir da explicação no site oficial, o posicionamento oficial do Playwright é uma verdadeira ferramenta de teste de ponta a ponta da Web .

2. Instalação do dramaturgo

O Playwright é poderoso, mas suas etapas de instalação são muito simples, precisam apenas de 2 etapas:

Passo 1, instale a biblioteca de dependência playwright-python (observe que a biblioteca playwright precisa confiar em Python3.7+ ou superior)

#Isso pode ser pip/pip3 ou ambos

pip3 install playwright

Você pode verificar suas informações de versão de dependência em https://pypi.org/project/playwright/.

Etapa 2, instale os drivers de navegador convencionais

Dessa forma, os drivers dos navegadores Chromeium, Firefox e Webkit serão baixados para o local

# Instale o driver do navegador (o processo de instalação é um pouco lento, por favor, seja paciente)

python3 -m playwright install

Se você deseja verificar as funções suportadas pelo Playwright, pode inserir diretamente na linha 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

Pode ser visto nas informações de ajuda da linha de comando que o Playwright suporta muitas funções!

3. Demonstração prática

Como mencionado no início, não há necessidade de escrever uma linha de código para usar o Playwright, basta operar manualmente o navegador, ele registrará nossas operações e gerará automaticamente os scripts de código.

1) Gravar roteiro

Vamos primeiro ver a descrição do comando do script de gravação

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

em:

  • python -m script de gravação do codegen do dramaturgo
  • --help documentação de ajuda
  • -o diretório para gerar scripts de automação
  • --target linguagem de script, incluindo JS e Python, os valores correspondentes são: python e javascript
  • -b especifica o driver do navegador

Por exemplo, desejo pesquisar no baidu.com, usar o driver chromium e salvar o resultado como um arquivo 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

Depois que a linha de comando for digitada, o navegador será aberto automaticamente e você poderá ver que cada movimento no navegador será traduzido automaticamente em código, conforme mostrado abaixo:

 

  Grupo de troca de aprendizado de teste automatizado Python: um conjunto completo de materiais de aprendizado de resumo de entrevista de teste automatizado para obter Clique no link para entrar no bate-papo do grupo [troca de teste automatizado de python]: http://qm.qq.com/cgi-bin/qm/ qr?_wv=1027&k=DhOSZDNS -qzT5QKbFQMsfJ7DsrFfKpOF&authKey=eBt%2BF%2FBK81lVLcsLKaFqnvDAVA8IdNsGC7J0YV73w8V%2FJpdbby66r7vJ1rsPIifg&noverify=0&group_code= 198408628

 

Por fim, o script de automação será gerado automaticamente e salvo no arquivo mikezhou.py, e todas as operações manuais acima serão convertidas automaticamente em 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) Sincronização de suporte

A palavra-chave para sincronização é: sync_playwright

Por exemplo, usamos três núcleos do navegador para abrir o navegador por vez, clicar no Baidu, fazer uma captura de tela da interface de pesquisa e, finalmente, fechar o 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()

Deve-se ressaltar que a API integrada do playwright-python inclui basicamente operações de automação comuns.

3) Suporte assíncrono

A palavra-chave da sincronização assíncrona é: async_playwright, a operação assíncrona pode ser combinada com asyncio para executar três operações do navegador ao mesmo tempo.

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) Suporta terminal móvel

Além do mais, o dramaturgo também pode suportar simulação de navegador móvel. A seguir, um trecho de código fornecido pelo documento oficial, simulando o navegador Safari no celular iphone 11 pro em uma determinada localização geográfica, primeiro navegue até maps.google.com, faça o posicionamento e faça uma captura de tela.

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) Suporta framework Pytest

Além disso, também pode ser usado com o plug-in pytest, dando um exemplo do site 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")

Claro, além dos recursos listados acima, existem usos mais interessantes, que os leitores interessados ​​podem explorar por conta própria.

4. Resumo

Comparado com as estruturas de teste automatizadas existentes, o dramaturgo tem muitas vantagens, como:

  • Cross-browser, suporte Chromium, Firefox, WebKit;
  • Sistema operacional cruzado, suporte Linux, Mac, Windows;
  • Ele pode fornecer a função de gravação e geração de código, liberando as mãos;
  • Disponível para celular;

A desvantagem atual é que a ecologia e a documentação não são muito completas, como nenhuma documentação da API em chinês, nenhum bom tutorial e exemplos para aprendizado. Mas acredito que, à medida que mais e mais pessoas souberem disso, o futuro ficará cada vez melhor.

Por fim, deixe-me contar um pequeno segredo. Playwright é um framework de automação multilíngue. Além de oferecer suporte a Python, ele também oferece suporte a Java, JS, etc. Funções mais detalhadas podem ser desbloqueadas por meio de projetos oficiais~

Resumir:

Obrigado a todos que leram meu artigo com atenção! ! !

Eu pessoalmente selecionei alguns materiais técnicos que compilei em minha carreira de teste de software nos últimos anos, incluindo: e-books, módulos de currículo, vários modelos de trabalho, livros de entrevistas, projetos de auto-estudo, etc. Sejam todos bem-vindos a clicar no cartão de visita abaixo para obtê-lo gratuitamente, não perca.

Acho que você gosta

Origin blog.csdn.net/MXB_1220/article/details/131171823
Recomendado
Clasificación