學習Python不會這個都不知道吧?微軟最強 Python 自動化工具開源了!不用寫一行代碼!!!

1. 前言

最近,微軟對一款很是強大的 Python 自動化依賴庫實行了開源:playwright-pythonjavascript

它支持主流的瀏覽器,包含:Chrome、Firefox、Safari、Microsoft Edge 等,同時也支持以無頭模式、有頭模式運行java

playwright-python 同時提供了同步和異步的 API,能夠和 Pytest 測試框架結合使用,而且瀏覽器端的自動化腳本錄製也一樣支持。python

項目地址:https://github.com/microsoft/...git

2. 準備

在實戰以前,咱們只須要 2 步github

第 1 步,安裝 playwright-python 依賴庫web

# 安裝依賴庫  
pip3 install playwright

第 2 步,安裝主流的瀏覽器驅動瀏覽器

這樣,會將 Chromeium、Firefox、Webkit 瀏覽器驅動下載到本地框架

# 安裝瀏覽器驅動  
python -m playwright install

3. 實戰一下

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)

4. 最後

事實上,Playwright 是一個跨語言的自動化框架,支持 Python、Java、JS 等

Playwright 相比傳統的自動化框架 Selenium 來講,在 Context 上下文及 API 使用上,顯得更簡潔且強大。

相關文章
相關標籤/搜索