軟開源了乙個 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不僅與工具...