标签:def 方案 rip time div user lazy get password
找解决方案,找了好久,终于找到了, 其他博客给了我思路
F12后切换到Application,然后看token是存储在localStorage还是sessionStorage
实现代码:
LoginUrl,usename,password我都自己封装在cfg.py文件中了
import time from selenium import webdriver from cfg import LoginUrl,usename,password class GetToken(): def __init__(self): self.driver=webdriver.Chrome() def loginUI(self): self.driver.get(LoginUrl) self.driver.maximize_window() self.driver.implicitly_wait(10) # 登录输入用户名,密码 self.driver.find_element_by_id(‘LoginForm_username‘).send_keys(usename) self.driver.find_element_by_id(‘LoginForm_password‘).send_keys(password) self.driver.find_element_by_id(‘loginSubmit‘).click() # 强制等待5秒,待session和token都成功返回并存到浏览器中 time.sleep(5) # 获取token def get_token(self): # 是要从localStorage中获取还是要从sessionStorage中获取,具体看目标系统存到哪个中 # window.sessionStorage和直接写sessionStorage是等效的 # 一定要使用return,不然获取到的一直是None # get的Item不一定就叫token,得具体看目标系统把token存到哪个变量中 token = self.driver.execute_script(‘return localStorage.getItem("token");‘) # print(‘token:‘,token) return token #关闭浏览器 def close_browser(self): self.driver.quit() if __name__ == ‘__main__‘: gt = GetToken() gt.loginUI() ret_token=gt.get_token() print(‘获取到的token:‘,ret_token) gt.close_browser()
结果如下:
接口自动化,sso单点登陆不支持通过接口返回token,其他请求又需要token。解决方式,使用UI自动化的selenium框架登陆获取token
标签:def 方案 rip time div user lazy get password
原文地址:https://www.cnblogs.com/Lara1798/p/13328437.html