Web UI自动化利器-Playwright
2022-09-28 本文已影响0人
沈宥
一、安装
1、官方文档:https://playwright.dev/python/docs/intro
2、Git:https://github.com/Microsoft/playwright-python
3、pypi:https://pypi.org/project/playwright/
4、安装
依赖:Python 3.7 版本及以上
安装过程中会自动安装对应的浏览器和驱动,不需要额外配置 WebDriver
(1)通过pip
安装
pip install --upgrade pip
pip install playwright![WeChata015d461b80d2fdc27fabdf405caab2c.png](https://img.haomeiwen.com/i1721545/f32bdb0dd0f8c6d8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
playwright install
(2)通过Conda
安装
conda config --add channels conda-forge
conda config --add channels microsoft
conda install playwright
playwright install
二、使用教程
1、录制操作,自动生成脚本
(1)代码生成的参数配置
iOSdeMacBook-Pro:~ ios$ playwright codegen --help
Usage: playwright 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 generate, one of javascript, test, python, python-async, pytest, csharp, csharp-mstest, csharp-nunit, java
(default: "python")
--save-trace <filename> record a trace for the session and save it to a file
-b, --browser <browserType> browser to use, one of cr, chromium, ff, firefox, wk, webkit (default: "chromium")
--block-service-workers block service workers
--channel <channel> Chromium distribution channel, "chrome", "chrome-beta", "msedge-dev", etc
--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"
--ignore-https-errors ignore https errors
--load-storage <filename> load context storage state from the file, previously saved with --save-storage
--lang <language> specify language / locale, for example "en-GB"
--proxy-server <proxy> specify proxy server, for example "http://myproxy:3128" or "socks5://myproxy:8080"
--proxy-bypass <bypass> comma-separated domains to bypass proxy, for example ".com,chromium.org,.domain.com"
--save-har <filename> save HAR file with all network activity at the end
--save-har-glob <glob pattern> filter entries in the HAR by matching url against this glob pattern
--save-storage <filename> save context storage state at the end, for later use with --load-storage
--timezone <time zone> time zone to emulate, for example "Europe/Rome"
--timeout <timeout> timeout for Playwright actions in milliseconds, no timeout by default
--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
Examples:
$ codegen
$ codegen --target=python
$ codegen -b webkit https://example.com
(2)举个例子
-
启动Chrome浏览器,并将操作生成的代码保存至
script.py
文件
playwright codegen -o script.py -b chromium
-
操作内容:打开谷歌浏览器->输入网址
www.baidu.com
->搜索playwright
->点击搜索结果跳转至新的页面 -
操作过程中脚本录制窗口
-
操作结束后生成的脚本内容
from playwright.sync_api import Playwright, sync_playwright, expect
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
# Open new page
page = context.new_page()
# Go to https://www.baidu.com/
page.goto("https://www.baidu.com/")
# Fill input[name="wd"]
page.locator("input[name=\"wd\"]").fill("playwright")
# Press Enter
page.locator("input[name=\"wd\"]").press("Enter")
page.wait_for_url("https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=playwright&fenlei=256&rsv_pq=0xd272fa420008bebd&rsv_t=9496e%2B6WkXXT%2BmgTQaenMhJQVTQXmwK36qkPQoVTCuYSoVS3Dzrquf4O17nm&rqlang=en&rsv_enter=1&rsv_dl=tb&rsv_sug3=12&rsv_sug1=12&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&prefixsug=playwright&rsp=5&inputT=7995&rsv_sug4=7996&rsv_jmp=fail")
# Click text=microsoft/playwright - GitHub
with page.expect_popup() as popup_info:
page.locator("text=microsoft/playwright - GitHub").click()
page1 = popup_info.value
page.wait_for_url("https://github.com/microsoft/playwright")
# Go to https://github.com/microsoft/playwright
page1.goto("https://github.com/microsoft/playwright")
# ---------------------
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)