Índice
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.