1.簡介
這一篇宏哥主要介紹playwright如何在IE、Chrome和Firefox三個瀏覽器上處理不信任證書的情況,我們知道,有些網站打開是彈窗,SSL證書不可信任,但是你可以點擊高級選項,繼續打開不安全的鏈接。舉例來說,想必大家都應該用過前幾年的12306網站購票,點擊新版購票,是不是會出現如下的界面。宏哥又找了一個https的頁面,不過現在這種網站很少了,主要原因就是大家越來越覺得安全的重要性,想要找到這麼個網站可是不容易,費了好久,一個客戶的VPN剛好是這種情況,如下圖所示:
2.三種瀏覽器如何處理不受信任的證書
在selenium三種瀏覽器訪問網頁,彈出證書不信任,需要點擊下信任繼續訪問纔行,多爲訪問https的網頁。那麼我們在做自動化測試的時候,如何跳過這一步驟,直接訪問到我們需要的頁面了,這個就是宏哥主要分享和講解的如何在三大瀏覽器跳過這一步驟。因此宏哥在playwright中也覺得類似差不多,但是代碼寫完後,宏哥直接傻眼了,完全不一樣啊!!!playwright直接都沒有訪問到那個安全提示的頁面,就報錯了:playwright._impl._api_types.Error: net::ERR_CERT_AUTHORITY_INVALID at。
3.解決方案
1.宏哥網上查了有關資料說是有關證書安全或則信任的錯誤,那麼遇到這種我們怎麼處理呢???首先確定的之前那種定位到【詳細信息】,點擊,然後再定位到【轉到此網頁(不推薦)】點擊的方法不能用了,因爲根本就沒有訪問到這個頁面,怎麼定位點擊。
2.既然第一種不行,那就另闢蹊徑,看看這種方法:playwright 設置 ignore_https_errors 參數忽略 SSL 錯誤 。
3.1context上下文中設置
context()設置 ignore_https_errors 參數忽略 SSL 錯誤,語法如下:
# 參數說明 ignore_https_errors=True 訪問https地址解決安全證書 viewport={"width": 1920, "height": 1080} 最大化打開瀏覽器,參數可設置。 eg: context = browser.new_context(ignore_https_errors=True, viewport={"width": 1920, "height": 1080})
3.2page()中設置
page()設置 ignore_https_errors 參數忽略 SSL 錯誤,語法如下:
# 參數說明 ignore_https_errors=True 訪問https地址解決安全證書 viewport={"width": 1920, "height": 1080} 最大化打開瀏覽器,參數可設置。 eg: page = browser.new_page(ignore_https_errors=True, viewport={"width": 1920, "height": 1080})
4.項目實戰-context上下文中設置
4.1代碼設計
4.2參考代碼
# coding=utf-8🔥 # 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行 # 2.註釋:包括記錄創建時間,創建人,項目名稱。 ''' Created on 2023-11-17 @author: 北京-宏哥 公衆號:北京宏哥 Project: 《最新出爐》系列初窺篇-Python+Playwright自動化測試-33-處理https 安全問題或者非信任站點 ''' # 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(ignore_https_errors=True) page = context.new_page() page.goto("https://1**.2**.**5.90:8899") page.wait_for_timeout(3000) context.close() browser.close() with sync_playwright() as playwright: run(playwright)
4.3運行代碼
1.運行代碼,右鍵Run'Test',控制檯輸出,如下圖所示:
2.運行代碼後電腦端的瀏覽器的動作。如下圖所示:
5.項目實戰-page()中設置
那宏哥就趁熱打鐵,按照上邊的思路,實踐一下,看看到底行不行。
5.1代碼設計
5.2參考代碼
# coding=utf-8🔥 # 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行 # 2.註釋:包括記錄創建時間,創建人,項目名稱。 ''' Created on 2023-11-17 @author: 北京-宏哥 公衆號:北京宏哥 Project: 《最新出爐》系列初窺篇-Python+Playwright自動化測試-33-處理https 安全問題或者非信任站點 ''' # 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 = browser.new_page(ignore_https_errors=True) page.goto("https://1**.2**.1**.9*:8899") page.wait_for_timeout(3000) browser.close() with sync_playwright() as playwright: run(playwright)
5.3運行代碼
1.運行代碼,右鍵Run'Test',控制檯輸出,如下圖所示:
2.運行代碼後電腦端的瀏覽器的動作(可以跳過安全提示,成功訪問到頁面了)。如下圖所示:
6.小結
到此遇到了類似的問題就可以參考宏哥的方法就行解決了,宏哥這裏僅僅講解和分享了一下Chrome瀏覽器,其他的瀏覽器類似的處理方法,不過宏哥沒有試過,不一定能成功,有興趣的童鞋或者小夥伴們可以嘗試一下。
好了,時間不早了,今天就分享到這裏,感謝大家耐心的閱讀!!!