這一篇宏哥主要介紹playwright如何在IE、Chrome和Firefox三個瀏覽器上處理不信任證書的情況,我們知道,有些網站開啟是彈窗,SSL證書不可信任,但是你可以點選高階選項,繼續開啟不安全的連結。舉例來說,想必大家都應該用過前幾年的12306網站購票,點選新版購票,是不是會出現如下的介面。宏哥又找了一個https的頁面,不過現在這種網站很少了,主要原因就是大家越來越覺得安全的重要性,想要找到這麼個網站可是不容易,費了好久,一個客戶的VPN剛好是這種情況,如下圖所示:
在selenium三種瀏覽器存取網頁,彈出證書不信任,需要點選下信任繼續存取才行,多為存取https的網頁。那麼我們在做自動化測試的時候,如何跳過這一步驟,直接存取到我們需要的頁面了,這個就是宏哥主要分享和講解的如何在三大瀏覽器跳過這一步驟。因此宏哥在playwright中也覺得類似差不多,但是程式碼寫完後,宏哥直接傻眼了,完全不一樣啊!!!playwright直接都沒有存取到那個安全提示的頁面,就報錯了:playwright._impl._api_types.Error: net::ERR_CERT_AUTHORITY_INVALID at。
1.宏哥網上查了有關資料說是有關證書安全或則信任的錯誤,那麼遇到這種我們怎麼處理呢???首先確定的之前那種定位到【詳細資訊】,點選,然後再定位到【轉到此網頁(不推薦)】點選的方法不能用了,因為根本就沒有存取到這個頁面,怎麼定位點選。
2.既然第一種不行,那就另闢蹊徑,除了上一篇中提到的這種方法:playwright 設定 ignore_https_errors 引數忽略 SSL 錯誤 。後來隨著學習和了解還有一種方法:結合 pytest-playwright 用例外掛。
pytest-playwright
外掛寫自動化用例時,在conftest.py 中加入context 上下文啟動引數,語法如下:
# conftest.py import pytest @pytest.fixture(scope="session") def browser_context_args(browser_context_args): return { **browser_context_args, "ignore_https_errors": True, } @pytest.fixture(scope="session") def browser_context_args(browser_context_args): return { **browser_context_args, "viewport": { "width": 1920, "height": 1080, } }
pytest-playwright外掛完美的繼承了pytest 用例框架和playwright基礎使用的封裝,基本能滿足工作中的常規需求了,不需要我們再做額外的外掛開發。
Playwright 建議使用官方的 pytest-playwright 外掛來編寫端到端測試。它提供上下文隔離,開箱即用地在多個瀏覽器設定上執行。或者,您可以使用該庫使用您喜歡的測試執行程式手動編寫測試基礎設施。Pytest 外掛使用 Playwright 的同步版本,還有一個可通過庫存取的非同步版本。
開始安裝 Playwright 並執行範例測試以檢視它的實際效果。
在Docs命令視窗輸入如下命令:
pip install pytest-playwright
# coding=utf-8