微軟開源的瀏覽器自動化工具 Playwright

2021-10-12 17:48:01 字數 2534 閱讀 8318

軟開源了乙個 python 專案:playwright,從此又多了乙個瀏覽器自動化工具。之前一直用 selenium 或 splinter。

playwright 可通過單個 api 自動執行 chromium,firefox 和 webkit瀏覽器,支援無頭瀏覽器(headless),linux、macos、windows 下均可以使用,playwright提供的自動化技術是綠色的,功能強大,穩定且速度快。

playwright 最吸引我的地方在於它可以自己記錄你對瀏覽器的操作,並將這些操作生成可以執行的**,這簡直就是神器,大大提公升了瀏覽器自動化的效率。生成**只需要執行

python -m playwright codegen

此外,它不像 selenium 需要再單獨安裝瀏覽器驅動,它在 pip install 時就會安裝瀏覽器的驅動檔案。

pip install playwrightpython -m playwright install

這將會安裝 playwright 和 chromium,firefox 和 webkit 瀏覽器的二進位制檔案,非常方便,需要 python 3.7 及以上版本。

還有幾個亮眼的功能:

1、playwright同時提供同步(阻止)api和非同步api。

它們在功能方面是相同的,只是在使用api的方式上有所不同。

同步:from playwright import sync_playwright

with sync_playwright() as p: for browser_type in [p.chromium, p.firefox, p.webkit]: browser = browser_type.launch() page = browser.newpage() page.goto(『 page.screenshot(path=f』example-.png』) browser.close()

非同步:import asynciofrom 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() page = await browser.newpage() await page.goto(『 await page.screenshot(path=f』example-.png』) await browser.close()

asyncio.get_event_loop().run_until_complete(main())

2、整合 pytest 測試:

def test_playwright_is_visible_on_google(page): page.goto(「 page.type(「input[name=q]」, 「playwright github」) page.click(「input[type=submit]」) page.waitforselector(「text=microsoft/playwright」)

3、互動模式執行:

from playwright import sync_playwright>>> playwright = sync_playwright().start()

4、執行 js **:

from playwright import sync_playwright

with sync_playwright() as p: browser = p.firefox.launch() page = browser.newpage() page.goto(『 dimensions = page.evaluate(』』』() => }』』』) print(dimensions) browser.close()

5、中斷網路請求:

from playwright import sync_playwright

with sync_playwright() as p:

browser = p.chromium.launch()

page = browser.newpage()

def log_and_continue_request(route, request):

print(request.url)

route.continue_()

# log and continue all network requests

page.route('**', lambda route, request: log_and_continue_request(route, request))

page.goto('')

browser.close()

官方文件暫時還是 node.js 版本,不過正在轉換成 python 版本,api的呼叫方式相當一致,現在看 node.js 版本的文件來編碼也是無障礙的。

官方文件:

github 倉庫:

綜上,感覺比 selenium 更好用

Airtest UI自動化工具的使用

優點 缺點 airtestide內建了python3.6.5,airtest和poco環境,本地無需安裝python環境就能 直接使用 連線成功會出現 5.1 airtest框架基於影象識別 airtest中的常用api包括裝置連 接管理 裝置連線管理裝置連線管理 裝置操作 斷言 等三類api 在a...

selenium瀏覽器自動化模組

例項化乙個瀏覽器物件,填寫瀏覽器驅動位置,要加r,放置字元轉義 driver webdriver.chrome r chromedriver.exe 用get方法開啟網頁 driver.get 查詢頁面的 設定 選項,呼叫的方法 通過連線文字查詢元素 找到並點選 driver.find elemen...

持續改進的DevOps自動化工具

在devops中,該詞在過去幾年中似乎是很多流行語,但是這個流行語是it招聘人員,軟體公司和 商在網際網路上搜尋次數最多的詞。當談到devops時,專業發燒友爭辯說,它與工具或自動化無關,但他們錯過了,實際上,工具是取代任何公司中devops文化所建立的文化的工具。我們都同意,devops不僅與工具...