官方文檔:https://playwright.dev/docs/intro
1淮逊、Playwright介紹
Playwright是一個(gè)強(qiáng)大的Python庫杖小,僅用一個(gè)API即可自動執(zhí)行Chromium韧掩、Firefox、WebKit等主流瀏覽器自動化操作长窄,并同時(shí)支持以無頭模式养篓、有頭模式運(yùn)行。
Playwright提供的自動化技術(shù)是綠色的围详、功能強(qiáng)大、可靠且快速祖屏,支持Linux、Mac以及Windows操作系統(tǒng)买羞。
ps:博主以前都是用selenium來做ui自動化測試的, 部署的時(shí)候袁勺,還得額外安裝一個(gè)本地瀏覽器,或者去制作一個(gè)綠色免安裝版的瀏覽器(mac畜普、linux還不知道怎么制作)非常的不喜歡期丰。Playwright可以避免這種問題,Playwright安裝后吃挑,直接是打開瀏覽器引擎Chromium钝荡、Firefox、WebKit進(jìn)行驅(qū)動操作舶衬,綠色且快速埠通。
二、安裝
安裝playwright庫
pip install playwright
安裝瀏覽器驅(qū)動文件(安裝過程稍微有點(diǎn)慢)
python -m playwright install
安裝成功后可查看幫助
python -m 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, 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
幫助解析
options含義:
-o:將錄制的腳本保存到一個(gè)文件
--target:規(guī)定生成腳本的語言逛犹,有JS和Python兩種端辱,默認(rèn)為Python
-b:指定瀏覽器驅(qū)動
我們可以執(zhí)行一行命令打開瀏覽器錄制操作并生成腳本梁剔,例如:
python -m playwright codegen --target python -o 'demo.py' -b chromium https://www.baidu.com
錄制關(guān)閉后,自動生成demo.py腳本舞蔽,執(zhí)行demo.py可以回放荣病。(ps:滾動操作無法錄制到,得自己修改代碼渗柿,添加滾動操作)
demo.py
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/")
# Click input[name="wd"]
page.locator("input[name=\"wd\"]").click()
# Fill input[name="wd"]
page.locator("input[name=\"wd\"]").fill("Playwright")
# Click text=百度一下
page.locator("text=百度一下").click()
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=dc316e380004ede0&rsv_t=8fd9RWXb83JO2c9YXPfB1V6gwx%2F4Yt3sFpHTOQjLhfEwx3pjr%2Bkui28W74ox&rqlang=en&rsv_enter=0&rsv_dl=tb&rsv_sug3=2&rsv_sug1=1&rsv_sug7=100&rsv_btype=i&prefixsug=Playwright&rsp=0&inputT=1949&rsv_sug4=2154")
# Close page
page.close()
# ---------------------
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)
Playwright的更多優(yōu)點(diǎn)可查看官方文檔 https://playwright.dev/docs/intro