1.簡介
這個系列的文章也講解和分享了差不多三分之一吧,突然有小夥伴或者童鞋們問道playwright有沒有截圖的方法。答案當然是:肯定有的。宏哥回過頭來看看確實這個非常基礎的知識點還沒有講解和分享。那麼在這個契機下就把它插隊分享和講解一下。Playwright提供了一個截圖的API:page.screenshot。使用該API,只需要指定截圖的圖片的儲存路徑及檔名即可。如果僅指定檔名,預設儲存在當前目錄。
2.截圖語法
截圖介紹官方API的文件地址:https://playwright.dev/python/docs/screenshots
2.1截圖引數
screenshot方法可以進行截圖,引數如下: timeout:以毫秒為單位的超時時間,0為禁用超時 path:設定截圖的路徑 type:圖片型別,預設jpg quality:畫素,不適用於jpg omit_background: 隱藏預設白色背景,並允許捕獲具有透明度的螢幕截圖。不適用於“jpeg”影像。 full_page:如果為true,則獲取完整可滾動頁面的螢幕截圖,而不是當前可見的視口。預設為 `假`。 clip:指定結果影像剪裁的物件clip={'x': 10 , 'y': 10, 'width': 10, 'height': 10}
3.快速截圖(擷取當前螢幕)
playwright除了可以擷取當前螢幕,還可以截長圖,也可以對某個元素截圖,是不是炒雞方便。這是捕獲螢幕截圖並將其儲存到檔案中的快速截圖(如果僅僅擷取當前螢幕(瀏覽器)上能看到的部分)語法如下:
page.screenshot(path="screenshot.png")
3.1實戰示例
# coding=utf-8🔥 # 1.先設定編碼,utf-8可支援中英文,如上,一般放在第一行 # 2.註釋:包括記錄建立時間,建立人,專案名稱。 ''' Created on 2023-11-23 @author: 北京-宏哥 公眾號:北京宏哥 Project: 《最新出爐》系列初窺篇-Python+Playwright自動化測試-36-如何截圖 ''' # 3.匯入模組 from playwright.sync_api import Playwright, sync_playwright, expect def run(playwright: Playwright) -> None: browser = playwright.chromium.launch(headless=False) context = browser.new_context() page = context.new_page() page.goto("https://www.baidu.com/") page.screenshot(path='a.png') # 截圖 print(page.title()) page.wait_for_timeout(1000) context.close() browser.close() with sync_playwright() as playwright: run(playwright)
3.2執行程式碼
1.執行程式碼,右鍵Run'Test',就可以看到截圖和控制檯輸出,如下圖所示:
2.執行程式碼後電腦端的瀏覽器的動作。如下圖所示:
4.整頁截圖(擷取整個頁面)
有時候,頁面可能會比較長,一個螢幕無法全部展示出來。如果想擷取整個頁面,怎麼辦呢?設定full_page=True
引數 screenshot 是一個完整的可滾動頁面的螢幕截圖,就好像你有一個非常高的螢幕並且頁面可以完全容納它。
playwright螢幕截圖語法如下:
page.screenshot(path="screenshot.png", full_page=True)
4.1實戰示例
# coding=utf-8🔥 # 1.先設定編碼,utf-8可支援中英文,如上,一般放在第一行 # 2.註釋:包括記錄建立時間,建立人,專案名稱。 ''' Created on 2023-11-23 @author: 北京-宏哥 公眾號:北京宏哥 Project: 《最新出爐》系列初窺篇-Python+Playwright自動化測試-36-如何截圖 ''' # 3.匯入模組 from playwright.sync_api import Playwright, sync_playwright, expect def run(playwright: Playwright) -> None: browser = playwright.chromium.launch(headless=False) context = browser.new_context() page = context.new_page() page.goto("https://www.baidu.com/") page.screenshot(path="screenshot.png", full_page=True) # 截圖 print(page.title()) page.wait_for_timeout(1000) context.close() browser.close() with sync_playwright() as playwright: run(playwright)
4.2執行程式碼
1.執行程式碼,右鍵Run'Test',就可以看到截圖和控制檯輸出,如下圖所示:
2.執行程式碼後電腦端的瀏覽器的動作。如下圖所示:
5.小結
好了,今天時間不早了,關於playwright的截圖就先介紹講解到這裡,下一篇繼續介紹截圖的其他操作方法。感謝您耐心的閱讀!!!