《最新出爐》系列入門篇-Python+Playwright自動化測試-8-上下文(Context)

2023-07-17 12:01:06

1.簡介

其實前邊的文章中也提到過Context,只不過是 一筆帶過,但是宏哥覺得在playwright中挺重要的,所以宏哥今天單獨將其拎出來講解和分享一下,希望對您有所幫助或者參考。

2.前言

Playwright為每個測試建立一個瀏覽器上下文,即BrowserContext,瀏覽器上下文相當於一個全新的瀏覽器組態檔,提供了完全的測試隔離,並且零開銷。建立一個新的瀏覽器上下文只需要幾毫秒,每個上下文都有自己的Cookie、瀏覽器儲存和瀏覽歷史記錄。瀏覽器上下文允許同時開啟多個頁面並與之互動,每個頁面都有自己單獨的狀態,一個 BrowserContext 可以包含多個 Page。一個BrowserContex就像是一個獨立的匿名模式對談(session),非常輕量,但是又完全隔離。

每個browser範例可有多個BrowserContex,且完全隔離。比如可以在兩個BrowserContext中登入兩個不同的賬號,也可以在兩個 context 中使用不同的代理。
context還可用於模擬涉及移動裝置、許可權、區域設定和配色方案的多頁面場景。

3.Context實現測試瀏覽器環境隔離

使用 Playwright 編寫的測試在稱為瀏覽器上下文的隔離的全新環境中執行。這種隔離模型提高了可重複性並防止級聯測試失敗。

3.1什麼是測試隔離

測試隔離是指每個測試與另一個測試完全隔離。每個測試都獨立於任何其他測試執行。這意味著每個測試都有自己的本地儲存、對談儲存、cookie 等。Playwright 使用BrowserContext實現了這一點,這相當於隱身式組態檔。它們的建立速度快、成本低,並且完全隔離,即使在單個瀏覽器中執行也是如此。Playwright 為每個測試建立一個上下文,並在該上下文中提供一個預設頁面。

3.2為什麼測試隔離很重要

  • 沒有失敗結轉。如果一個測試失敗,它不會影響另一個測試。
  • 易於偵錯錯誤或不穩定,因為您可以根據需要多次執行單個測試。
  • 並行執行、分片等時不必考慮順序。

測試隔離有兩種不同的策略:從頭開始或在兩者之間進行清理。在測試之間清理的問題是很容易忘記清理,有些東西是不可能清理的,比如「存取過的連結」。來自一個測試的狀態可能會洩漏到下一個測試中,這可能會導致您的測試失敗並使偵錯變得更加困難,因為問題來自另一個測試。從頭開始意味著一切都是新的,因此如果測試失敗,您只需檢視該測試即可進行偵錯。

3.3Playwright 如何實現測試

Playwright 使用瀏覽器上下文來實現測試隔離。每個測試都有自己的瀏覽器上下文。每次執行測試都會建立一個新的瀏覽器上下文。使用 Playwright 作為測試執行程式時,預設情況下會建立瀏覽器上下文。否則,您可以手動建立瀏覽器上下文。

browser = playwright.chromium.launch()
context = browser.new_context()
page = context.new_page()

瀏覽器上下文還可用於模擬涉及移動裝置、許可權、區域設定和配色方案的多頁面場景。

Playwright 可以在一個場景中建立多個瀏覽器上下文。當您想測試多使用者功能(如聊天)時,這很有用。


# coding=utf-8