获取localstorage
优化代码如下:
# 点击登录
driver.find_element_by_xpath('//*[@id="appidlo"]/button').click()
# 等待时间,写入token
time.sleep(5)#等待时间很重要!!
# 获取到token
try:
local_storage = driver.execute_script("return window.localStorage.getItem('access_token');")
print("Authorization--access_token:", str(local_storage))
except Exception as e:
raise e
Authorization = 'Bearer' + ' ' + local_storage
print("Authorization:", Authorization)
setattr(api_take_menu,Authorization,Authorization)
return Authorization
小插曲:
今天在获取localstorage时候,一直返回的是None
即使是打了点断,发现
local_storage = driver.execute_script("return window.localStorage.getItem('access_token');")
上面的local_storage真真切切是有数据的,而且就是想要获取的值;
查了一些文章,想看看有木有别人跟我遇到一样的问题时,有个大佬的评论给了我灵感:
他说--->
在发出请求后马上就得到了本地存储值,但是在设置令牌之前可能会有一个延迟。
你能在发出请求后等待一段时间,看看是不是这样
哦??想想有点道理,不如来试试看,哪成想确实取到了想要的token值,看来大佬说的没错
没有添加等待时间后者等待时间多短导致的取值异常不是第一次出现了,
不稳定的网络环境往往会比代码执行的速度要慢,
就会导致结果还没有写入数据库里或者还没有返回过来,数据库校验或者接口断言就开始了,
会很容易就报错了,要么就断言异常或者取不到想要的值
获取sessionstorage
要获取浏览器 Session Storage 内的 Token 值,可以使用类似于获取 Local Storage 值的方法。
首先,您需要安装 Selenium 和相应的 Web Driver(例如 Chrome Driver)。然后,使用以下 Python 代码片段来启动 Chrome 浏览器并访问指定页面:
from selenium import webdriver
# 启动 Chrome 浏览器
driver = webdriver.Chrome()
# 访问网页
driver.get("https://example.com")
接下来,您可以使用以下 JavaScript 代码来获取 Session Storage 中名为“token”的项的值:
return window.sessionStorage.getItem('token');
将上述 JavaScript 代码与 Python 结合使用,以获取 Session Storage 中的 Token 值,如下所示:
# 获取 Session Storage 中的 Token 值
token = driver.execute_script("return window.sessionStorage.getItem('token');")
# 打印 Token 值
print(token)
这样,您就可以在 Python 代码中获取浏览器 Session Storage 中的 Token 值了。如果 execute_script
方法返回 None
,那么可能是因为浏览器中没有名为 "token"
的 Session Storage 项,或该项的值为 null
或 undefined
。