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的截圖就先介紹講解到這裏,下一篇繼續介紹截圖的其他操作方法。感謝您耐心的閱讀!!!