如何在Python版Selenium中读取浏览器Session Storage存储值
问题根因
执行JS读取sessionStorage返回0的常见原因有两个:
- 读取时机过早:页面自身的JS逻辑还没完成向sessionStorage写入数据的操作,你就已经执行了读取脚本
- 作用域指向错误:部分浏览器上下文下直接调用
sessionStorage不会默认绑定到顶层window对象,导致读取的是空的作用域存储
解决方案
按以下步骤编写Selenium脚本即可正常读取:
- 导航到目标站点后先等待页面完全加载,确保页面自身的业务逻辑已经执行完毕
- 显式指定
window.sessionStorage读取存储内容
完整Python示例代码
from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By import time # 初始化驱动 driver = webdriver.Chrome() # 导航到Google首页 driver.get("https://www.google.com") # 显式等待搜索框加载完成,确认页面核心逻辑已执行 WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, "q"))) # 可选:额外等待1-2秒,确保页面异步逻辑完成写入sessionStorage time.sleep(1) # 读取sessionStorage总长度 storage_len = driver.execute_script("return window.sessionStorage.length") print(f"Session Storage 总键数:{storage_len}") # 读取所有键值对 all_storage = driver.execute_script(""" let result = {}; for (let i = 0; i < window.sessionStorage.length; i++) { const key = window.sessionStorage.key(i); result[key] = window.sessionStorage.getItem(key); } return result; """) # 输出所有内容 for key, value in all_storage.items(): print(f"\n键:{key}") print(f"值:{value}") driver.quit()
补充说明
如果仍然读取不到内容,可以检查当前是否切换到了非顶层的iframe上下文,如果是需要先切回default_content再执行读取脚本。
内容的提问来源于stack exchange,提问作者Julius Hamilton
相关产品推荐
相关产品推荐

