最近,微軟對一款很是強大的 Python 自動化依賴庫實行了開源:playwright-pythonjavascript
它支持主流的瀏覽器,包含:Chrome、Firefox、Safari、Microsoft Edge 等,同時也支持以無頭模式、有頭模式運行java
playwright-python 同時提供了同步和異步的 API,能夠和 Pytest 測試框架結合使用,而且瀏覽器端的自動化腳本錄製也一樣支持。python
項目地址:https://github.com/microsoft/...git
在實戰以前,咱們只須要 2 步github
第 1 步,安裝 playwright-python 依賴庫web
# 安裝依賴庫 pip3 install playwright
第 2 步,安裝主流的瀏覽器驅動瀏覽器
這樣,會將 Chromeium、Firefox、Webkit 瀏覽器驅動下載到本地框架
# 安裝瀏覽器驅動 python -m playwright install
3-1 錄製腳本less
咱們先經過對錄製腳本的命令說明的查看運維
其中
· python -m playwright codegen 錄製腳本
· --help 幫助文檔
· -o 自動化腳本的目錄的生成
· --target 腳本語言,包含 JS 和 Python,分別對應值爲:python 和 javascript
· -b 指定瀏覽器驅動
好比 # 咱們經過下面命令打開 Chrome 瀏覽器開始錄製腳本 # 指定生成語言爲:Python(默認Python,可選) # 保存的文件名:1.py(可選) # 瀏覽器驅動:webkit(默認webkit,可選) # 最後跟着要打開的目標網站(默認僅僅是打開瀏覽器,可選) python -m playwright codegen --target python -o 1.py -b webkit https://www.baidu.com
接着,在瀏覽器模擬搜索一次的操做,而後關閉瀏覽器
**推薦 :020 持續更新,精品小圈子每日都有新內容,乾貨濃度極高。
結實人脈、討論技術 你想要的這裏都有!
搶先入羣,跑贏同齡人!(入羣無需任何費用)
點擊此處,與Python開發大牛一塊兒交流學習。
羣號:745895701
申請即送:
Python軟件安裝包,Python實戰教程
資料免費領取,包括 Python基礎學習、進階學習、爬蟲、人工智能、自動化運維、自動化測試等**
最後,自動化腳本會自動生成,保存到文件中
from playwright import sync_playwright def run(playwright):browser = playwright.webkit.launch(headless=False)context = browser.newContext # Open new pagepage = context.newPage # Go to https://www.baidu.com/page.goto("https://www.baidu.com/") # Fill input[name="wd"] page.fill("input[name="wd"]", "AirPython") # Press Enter# with page.expect_navigation(url="https://www.baidu.com/s?ie=utf- 8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=AirPython&fenlei=256&rsv_pq=a1739d870005eec3&rsv_t=e640 wwS33ra1Koivxvy1WyTxyknRwnllWiw4JBqIYd/KUN/WKpWLtL2b2+0&rqlang=cn&rsv_enter=1&rsv_dl=tb&r sv_sug3=21&rsv_sug1=18&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&inputT=6199&rsv_sug4=6199"): with page.expect_navigation:page.press("input[name="wd"]", "Enter") # Close pagepage.close # --------------------- context.close browser.close with sync_playwright as playwright: run(playwright)
3-2 同步
同步的關鍵字爲:sync_playwright
好比,咱們依次經過三個瀏覽器內核來打開瀏覽器,而後百度一下,而後對搜索界面進行截圖,最後關閉瀏覽器
from time import sleep from playwright import sync_playwright # 注意:默認是無頭模式 with sync_playwright as p: # 分別對應三個瀏覽器驅動 forbrowser_type in [p.chromium, p.firefox, p.webkit]: # 指定爲有頭模式,方便查看 browser = browser_type.launch(headless=False) page = browser.newPagepage.goto( http://baidu.com ) # 執行一次搜索操做 page.fill("input[name="wd"]", "AirPython") with page.expect_navigation: page.press("input[name="wd"]", "Enter") # 等待頁面加載徹底 page.waitForSelector("text=百度熱榜") # 截圖 page.screenshot(path=f example-{browser_type.name}.png ) # 休眠 5s sleep(5) # 關閉瀏覽器 browser.close
須要指出的是,playwright-python 內置的 API 常見的自動化操做基本上都被囊括在內了
3-3 異步
異步的關鍵字爲:async_playwright
結合 asyncio,咱們同時執行上面的操做
import asyncio from playwright import async_playwright # 異步執行 async def main: async with async_playwright as p: forbrowser_type in [p.chromium, p.firefox, p.webkit]: # 指定爲有頭模式,方便查看 browser = await browser_type.launch(headless=False) page = await browser.newPageawait page.goto( http://baidu.com ) # 執行一次搜索操做 await page.fill("input[name="wd"]", "AirPython") await page.press("input[name="wd"]", "Enter") # 等待頁面加載徹底 await page.waitForSelector("text=百度熱榜") # 截圖 await page.screenshot(path=f example-{browser_type.name}.png ) await browser.closeasyncio.get_event_loop.run_until_complete(main)
事實上,Playwright 是一個跨語言的自動化框架,支持 Python、Java、JS 等
Playwright 相比傳統的自動化框架 Selenium 來講,在 Context 上下文及 API 使用上,顯得更簡潔且強大。