Python-获取Local Storage和Session Storage

一、简介
LocalStorage 是只读的。数据存储也是跨浏览器会话。LocalStorage 类似于SessionStorage。
区别在于,数据存储在 LocalStorage 是无期限的,而当页面会话结束——也就是说当页面被关闭时,数据存储在 SessionStorage 会被清除 。
二、演示示例


三、代码实现
# -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import yaml from pathlib import Path URL = "你的测试链接" USER_MES = ("你的账号", "你的密码") LOCAL_STORAGE_PATH = Path("你的生成yaml文件路径") # 如: Path("tmp/localstorage.yaml") class StorageHelper: user_name_loc = (By.XPATH, "lalala") pass_word_loc = (By.XPATH, "dididi") login_button_loc = (By.XPATH, "lilili") def __init__(self, wait_secs=10): self.wait_secs = wait_secs def _wait(self, driver, locator): return WebDriverWait(driver, self.wait_secs).until( EC.presence_of_element_located(locator) ) def save_localstorage(self): driver = webdriver.Chrome() try: driver.get(URL) self._wait(driver, self.user_name_loc).send_keys(USER_MES[0]) self._wait(driver, self.pass_word_loc).send_keys(USER_MES[1]) self._wait(driver, self.login_button_loc).click() # 等页面完成登录后,可等待某标识元素或接口完成 WebDriverWait(driver, self.wait_secs).until( lambda d: d.execute_script("return window.localStorage.length") > 0 ) local_storage = driver.execute_script("return window.localStorage") LOCAL_STORAGE_PATH.parent.mkdir(parents=True, exist_ok=True) with LOCAL_STORAGE_PATH.open("w", encoding="utf-8") as f: yaml.safe_dump(dict(local_storage), f, allow_unicode=True) print(f"localStorage 已保存到 {LOCAL_STORAGE_PATH}") finally: driver.quit() def load_localstorage(self, driver): data = yaml.safe_load(LOCAL_STORAGE_PATH.read_text(encoding="utf-8")) for k, v in data.items(): driver.execute_script("localStorage.setItem(arguments[0], arguments[1]);", k, v) print("localStorage 注入完成") # 如果要用 sessionStorage,只需把下面两行替换: # local_storage = driver.execute_script("return window.sessionStorage") # driver.execute_script("sessionStorage.setItem(arguments[0], arguments[1]);", k, v) # 使用示例: # helper = StorageHelper() # helper.save_localstorage() # driver = webdriver.Chrome() # driver.get(URL) # helper.load_localstorage(driver) # 刷新或跳转受保护页进行后续操作
执行完成即可查看生成的.yaml文件


浙公网安备 33010602011771号