搜尋
首頁後端開發Python教學微軟出品的Python小白神器,真香!

微軟出品的Python小白神器,真香!

大家好,我是菜鳥哥!

最近逛G網,發現微軟開源了一個專案叫「playwright-python」,作為一個興起專案。

微軟出品的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

命令列輸入後會自動開啟瀏覽器,然後可以看見瀏覽器上的一舉一動都會自動翻譯成程式碼,如下所示。

微軟出品的Python小白神器,真香!

結束後自動關閉瀏覽器,儲存產生的自動化腳本到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中文網其他相關文章!

陳述
本文轉載於:51CTO.COM。如有侵權,請聯絡admin@php.cn刪除
Python的科學計算中如何使用陣列?Python的科學計算中如何使用陣列?Apr 25, 2025 am 12:28 AM

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

您如何處理同一系統上的不同Python版本?您如何處理同一系統上的不同Python版本?Apr 25, 2025 am 12:24 AM

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

與標準Python陣列相比,使用Numpy數組的一些優點是什麼?與標準Python陣列相比,使用Numpy數組的一些優點是什麼?Apr 25, 2025 am 12:21 AM

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

陣列的同質性質如何影響性能?陣列的同質性質如何影響性能?Apr 25, 2025 am 12:13 AM

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

編寫可執行python腳本的最佳實踐是什麼?編寫可執行python腳本的最佳實踐是什麼?Apr 25, 2025 am 12:11 AM

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

Numpy數組與使用數組模塊創建的數組有何不同?Numpy數組與使用數組模塊創建的數組有何不同?Apr 24, 2025 pm 03:53 PM

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

Numpy數組的使用與使用Python中的數組模塊陣列相比如何?Numpy數組的使用與使用Python中的數組模塊陣列相比如何?Apr 24, 2025 pm 03:49 PM

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

CTYPES模塊與Python中的數組有何關係?CTYPES模塊與Python中的數組有何關係?Apr 24, 2025 pm 03:45 PM

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

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

DVWA

DVWA

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

SublimeText3 英文版

SublimeText3 英文版

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

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器