playwright保持網(wǎng)站的登錄狀態(tài)的幾種方法
在使用 Playwright 自動化測試時,為了保持網(wǎng)站的登錄狀態(tài),可以通過以下方法實現(xiàn):
方法 1:保存和加載瀏覽器上下文的存儲狀態(tài)
Playwright 提供了 storageState 功能,可以保存當(dāng)前的瀏覽器存儲狀態(tài)(包括登錄的會話信息),并在后續(xù)會話中加載。
實現(xiàn)步驟:
登錄并保存狀態(tài)
在第一次運(yùn)行時,執(zhí)行登錄操作并將狀態(tài)保存到文件。from playwright.sync_api import sync_playwright def save_login_state(): with sync_playwright() as p: browser = p.chromium.launch(headless=False) context = browser.new_context() page = context.new_page() # 打開登錄頁面并完成登錄 page.goto("https://example.com/login") page.fill("input[name='username']", "your_username") page.fill("input[name='password']", "your_password") page.click("button[type='submit']") # 等待登錄完成 page.wait_for_url("https://example.com/dashboard") # 保存登錄狀態(tài)到文件 context.storage_state(path="state.json") browser.close() save_login_state()加載保存的狀態(tài)
在后續(xù)運(yùn)行中,加載保存的狀態(tài)文件,避免重復(fù)登錄。from playwright.sync_api import sync_playwright def use_saved_state(): with sync_playwright() as p: browser = p.chromium.launch(headless=False) # 使用之前保存的存儲狀態(tài) context = browser.new_context(storage_state="state.json") page = context.new_page() # 直接訪問需要登錄的頁面 page.goto("https://example.com/dashboard") print(page.title()) browser.close() use_saved_state()
方法 2:使用持久化上下文
Playwright 支持使用帶有持久化存儲的瀏覽器上下文,自動保留登錄狀態(tài)。
實現(xiàn)步驟:
創(chuàng)建持久化上下文
指定一個文件夾來保存瀏覽器會話數(shù)據(jù):from playwright.sync_api import sync_playwright def use_persistent_context(): with sync_playwright() as p: # 創(chuàng)建持久化上下文 user_data_dir = "user_data" browser = p.chromium.launch_persistent_context( user_data_dir, headless=False ) page = browser.new_page() # 打開需要登錄的頁面 page.goto("https://example.com/login") # 如果首次訪問,登錄后數(shù)據(jù)會自動保存到 user_data_dir page.fill("input[name='username']", "your_username") page.fill("input[name='password']", "your_password") page.click("button[type='submit']") page.wait_for_url("https://example.com/dashboard") browser.close() use_persistent_context()后續(xù)運(yùn)行直接加載會話數(shù)據(jù)
在后續(xù)運(yùn)行中,直接加載同一user_data_dir,會話數(shù)據(jù)會自動保留:from playwright.sync_api import sync_playwright def use_existing_persistent_context(): with sync_playwright() as p: # 使用之前的持久化上下文 browser = p.chromium.launch_persistent_context( "user_data", headless=False ) page = browser.new_page() # 訪問需要登錄的頁面 page.goto("https://example.com/dashboard") print(page.title()) browser.close() use_existing_persistent_context()
方法 3:使用 Cookies 手動保存和加載會話
通過手動保存和加載 Cookies 來保持登錄狀態(tài)。
實現(xiàn)步驟:
保存 Cookies
from playwright.sync_api import sync_playwright import json def save_cookies(): with sync_playwright() as p: browser = p.chromium.launch(headless=False) context = browser.new_context() page = context.new_page() page.goto("https://example.com/login") page.fill("input[name='username']", "your_username") page.fill("input[name='password']", "your_password") page.click("button[type='submit']") page.wait_for_url("https://example.com/dashboard") # 保存 Cookies 到文件 cookies = context.cookies() with open("cookies.json", "w") as f: json.dump(cookies, f) browser.close() save_cookies()加載 Cookies
from playwright.sync_api import sync_playwright import json def load_cookies(): with sync_playwright() as p: browser = p.chromium.launch(headless=False) context = browser.new_context() # 加載 Cookies with open("cookies.json", "r") as f: cookies = json.load(f) context.add_cookies(cookies) page = context.new_page() page.goto("https://example.com/dashboard") print(page.title()) browser.close() load_cookies()
方法選擇
- 方法 1(存儲狀態(tài)):適合短期保留登錄狀態(tài),并易于分享狀態(tài)文件。
- 方法 2(持久化上下文):適合長期保留會話(類似普通瀏覽器),無需額外管理文件。
- 方法 3(Cookies 管理):適合需要靈活操作 Cookies 的場景。
到此這篇關(guān)于playwright保持網(wǎng)站的登錄狀態(tài)的幾種方法的文章就介紹到這了,更多相關(guān)playwright 登錄狀態(tài)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python?pip特殊用法之pip?install?-v?-e?.命令詳解
這篇文章主要給大家介紹了關(guān)于python?pip特殊用法之pip?install?-v?-e?.命令的相關(guān)資料,文中通過圖文以及實例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-09-09
能讓你輕松的實現(xiàn)自然語言處理的5個Python庫
今天教大家如何你輕松的實現(xiàn)自然語言預(yù)處理,僅僅需要5個python庫,文中介紹的非常詳細(xì),對正在學(xué)習(xí)python的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05
Python機(jī)器學(xué)習(xí)之手寫KNN算法預(yù)測城市空氣質(zhì)量
KNN(K-Nearest Neighbor)最鄰近分類算法是數(shù)據(jù)挖掘分類(classification)技術(shù)中常用算法之一,本文將介紹如何通過KNN算法實現(xiàn)城市空氣質(zhì)量的預(yù)測,感興趣的同學(xué)可以了解一下2021-12-12

