《最新出爐》系列初窺篇-Python+Playwright自動化測試-37-如何截圖-上篇

宏哥發表於2024-01-29

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

相關文章