大家好,我是菜鳥哥!
最近逛G網,發現微軟開源了一個專案叫「playwright-python」,作為一個興起專案。
Playwright 是針對Python 語言的純自動化工具,它可以透過單一API自動執行Chromium,Firefox 和WebKit 瀏覽器,連程式碼都不用寫,就能自動化功能。
雖然測試工具 selenium 具有完整的文檔,但是其學習成本讓一眾小白們望而卻步,對比之下 playwright-python 簡直是小白們的神器。
Playwright真的適用於Python嗎?答案是肯定的,微軟對於適用於Python的Playwright已準備就緒。可能會發生API重大變更。但大機率是這種情況不會發生,微軟也表示僅在他們知道它可以改善您使用新函式庫的體驗時,才會可能這樣做。
不過微軟也提醒尚不支援特定於供應商的API的某些極端情況,例如收集Chromium跟踪,覆蓋率報告等。
1、Playwright介紹
Playwright是一個強大的Python庫,僅用一個API即可自動執行Chromium、Firefox、WebKit等主流瀏覽器自動化操作,並同時支援以無頭模式、有頭模式運作。
Playwright提供的自動化技術是綠色的、功能強大、可靠且快速,支援Linux、Mac以及Windows作業系統。
還有朋友這麼誇:這個專案作為針對 Python 語言純自動化的工具,解放了程式碼,實現了自動化功能,我們來看看怎麼用它。
2、Playwright使用
安裝
Playwright的安裝非常簡單,兩步驟解決。
安装playwright库 pip install playwright 安装浏览器驱动文件(安装过程稍微有点慢) python -m playwright install
上面兩個pip作業分別安裝:
- 安裝Playwright依賴函式庫,需要Python3.7
- 安裝Chromium、Firefox、WebKit等瀏覽器的驅動檔案
錄製
使用Playwright無需寫一行程式碼,我們只需手動操作瀏覽器,它會錄製我們的操作,然後自動產生程式碼腳本。
下面就是要錄製的指令codegen,只是一行。
命令行键入 --help 可看到所有选项 python -m playwright codegen
codegen的用法可以使用--help查看,如果簡單使用就是直接在命令後面加上url鏈接,如果有其他需要可以添加options。
python -m playwright codegen --help Usage: index 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 use, one of javascript, python, python-async, csharp (default: "python") -h, --helpdisplay help for command Examples: $ codegen $ codegen --target=python $ -b webkit codegen https://example.com
options意義:
- -o:將錄製的腳本儲存到一個檔案
- --target:規定產生腳本的語言,有JS和Python兩種,預設為Python
- -b:指定瀏覽器驅動
例如,我要在baidu.com搜索,用chromium驅動,將結果儲存為my.py的python檔案。
python -m playwright codegen --target python -o 'my.py' -b chromium https://www.baidu.com
命令列輸入後會自動開啟瀏覽器,然後可以看見瀏覽器上的一舉一動都會自動翻譯成程式碼,如下所示。
結束後自動關閉瀏覽器,儲存產生的自動化腳本到py檔。
from playwright import sync_playwright def run(playwright): browser = playwright.chromium.launch(headless=False) context = browser.newContext() # Open new page page = context.newPage() page.goto("https://www.baidu.com/") page.click("input[name="wd"]") page.fill("input[name="wd"]", "jingdong") page.click("text="京东"") # Click //a[normalize-space(.)='京东JD.COM官网 多快好省 只为品质生活'] with page.expect_navigation(): with page.expect_popup() as popup_info: page.click("//a[normalize-space(.)='京东JD.COM官网 多快好省 只为品质生活']") page1 = popup_info.value # --------------------- context.close() browser.close() with sync_playwright() as playwright: run(playwright
此外,playwright還提供了同步和非同步的API接口,文件如下。
- 連結:https://microsoft.github.io/playwright-python/index.html
同步
#下面範例程式碼:依序打開三個瀏覽器,前往baidu搜索,截圖後退出。
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('https://baidu.com/') page.screenshot(path=f'example-{browser_type.name}.png') browser.close()
非同步
非同步操作可結合asyncio同時進行三個瀏覽器操作。
import asyncio from 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('http://baidu.com/') await page.screenshot(path=f'example-{browser_type.name}.png') await browser.close() asyncio.get_event_loop().run_until_complete(main())
行動端
更厲害的是,playwright還可以支援行動端的瀏覽器模擬。以下是官方文件提供的一段程式碼,模擬在給定地理位置上手機iphone 11 pro上的Safari瀏覽器,首先導航到maps.google.com,然後執行定位並截圖。
from playwright import sync_playwright with sync_playwright() as p: iphone_11 = p.devices['iPhone 11 Pro'] browser = p.webkit.launch(headless=False) context = browser.newContext( **iphone_11, locale='en-US', geolocation={ 'longitude': 12.492507, 'latitude': 41.889938 }, permissions=['geolocation'] ) page = context.newPage() page.goto('https://maps.google.com') page.click('text="Your location"') page.screenshot(path='colosseum-iphone.png') browser.close()
另外,還可以配合pytest外掛一起使用,有興趣可以自己試試看。
3、總結
playwright相比已有的自動化測試工具有很多優勢,其中有:
支援所有瀏覽器的
- 在Chromium,Firefox和WebKit上進行測試。 Playwright擁有適用於所有現代瀏覽器的完整API覆蓋,包括Google Chrome和Microsoft Edge(帶有Chromium),Apple Safari(帶有WebKit)和Mozilla Firefox。
- 跨平台的WebKit測試。使用Playwright,使用適用於Windows,Linux和macOS的WebKit構建,測試您的應用程式在Apple Safari中的行為。在本地和CI上進行測試。
- 測試手機。使用裝置模擬在行動網路瀏覽器中測試您的自適應網路應用程式。
- 無報文頭與有報文頭。 Playwright支援所有瀏覽器和所有平台的無頭(無瀏覽器UI)和有頭(有瀏覽器UI)模式。有報文頭模式適用於偵錯,而無報文頭適用於CI / cloud執行。
有快速可靠的執行
- 自動等待APIs。 Playwright互動會自動等待直到元素準備就緒。這樣可以提高可靠性並簡化測試編寫流程。
- 無逾時自動化。 Playwright會接收瀏覽器訊號,例如網路請求,頁面導覽和頁面載入事件,以消除導致睡眠中斷的煩惱。
- 與瀏覽器上下文保持並行。對於多個並行孤立的瀏覽器上下文可執行環境重複使用一個單獨的瀏覽器實例。
- 性愛元素選擇器。 Playwright可以依靠使用者導向的字串(例如文字內容和可訪問性標籤)來選擇元素。這些字串比緊耦合到DOM結構的選擇器更具彈性。
有強大的自動化功能
- 多個網域,頁面和框架。 Playwright是一種進程外自動化驅動程序,不受頁面內JavaScript執行範圍的限制,並且可以自動執行具有多個頁面的方案。
- 強大的網路控制。 Playwright引入上下文範圍的網路攔截以便進行終止或模擬網路請求。
- 現代網路功能。 Playwright透過插入的選擇器,地理位置,權限,Web Worker和其他現代Web API支援Web元件。
- 涵蓋所有場景的能力。支援檔案下載上傳,進程外iframe,原生輸入事件,甚至是深色模式。
但它也有限制
- 舊版Edge和IE11支援。 Playwright不支援舊版Microsoft Edge或IE11(棄用通知)。支援新的Microsoft Edge(在Chromium上)。
- Java語言綁定:Playwright API目前無法在Java或Ruby中使用。這是暫時的限制,因為Playwright旨在支援任何語言的綁定。
- 在真實的行動裝置上進行測試:Playwright使用桌面瀏覽器來模擬行動裝置。
雖然有些局限,但現在playwright 已經更新到了1.7.0 版本,隨著一代代的更新,系統也會更為完善,作為一款小白神器,為大家省了那麼多事情,我們相信它的未來會越來越好。
以上是微軟出品的Python小白神器,真香!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Arraysinpython,尤其是Vianumpy,ArecrucialInsCientificComputingfortheireftheireffertheireffertheirefferthe.1)Heasuedfornumerericalicerationalation,dataAnalysis和Machinelearning.2)Numpy'Simpy'Simpy'simplementIncressionSressirestrionsfasteroperoperoperationspasterationspasterationspasterationspasterationspasterationsthanpythonlists.3)inthanypythonlists.3)andAreseNableAblequick

你可以通過使用pyenv、venv和Anaconda來管理不同的Python版本。 1)使用pyenv管理多個Python版本:安裝pyenv,設置全局和本地版本。 2)使用venv創建虛擬環境以隔離項目依賴。 3)使用Anaconda管理數據科學項目中的Python版本。 4)保留系統Python用於系統級任務。通過這些工具和策略,你可以有效地管理不同版本的Python,確保項目順利運行。

numpyarrayshaveseveraladagesoverandastardandpythonarrays:1)基於基於duetoc的iMplation,2)2)他們的aremoremoremorymorymoremorymoremorymoremorymoremoremory,尤其是WithlargedAtasets和3)效率化,效率化,矢量化函數函數函數函數構成和穩定性構成和穩定性的操作,製造

數組的同質性對性能的影響是雙重的:1)同質性允許編譯器優化內存訪問,提高性能;2)但限制了類型多樣性,可能導致效率低下。總之,選擇合適的數據結構至關重要。

到CraftCraftExecutablePythcripts,lollow TheSebestPractices:1)Addashebangline(#!/usr/usr/bin/envpython3)tomakethescriptexecutable.2)setpermissionswithchmodwithchmod xyour_script.3)

numpyArraysareAreBetterFornumericalialoperations andmulti-demensionaldata,而learthearrayModuleSutableforbasic,內存效率段

numpyArraySareAreBetterForHeAvyNumericalComputing,而lelethearRayModulesiutable-usemoblemory-connerage-inderabledsswithSimpleDatateTypes.1)NumpyArsofferVerverVerverVerverVersAtility andPerformanceForlargedForlargedAtatasetSetsAtsAndAtasEndCompleXoper.2)

ctypesallowscreatingingangandmanipulatingc-stylarraysinpython.1)usectypestoInterfacewithClibrariesForperfermance.2)createc-stylec-stylec-stylarraysfornumericalcomputations.3)passarraystocfunctions foreforfunctionsforeffortions.however.however,However,HoweverofiousofmemoryManageManiverage,Pressiveo,Pressivero


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

記事本++7.3.1
好用且免費的程式碼編輯器