码迷,mamicode.com
首页 > 其他好文 > 详细

接口自动化,sso单点登陆不支持通过接口返回token,其他请求又需要token。解决方式,使用UI自动化的selenium框架登陆获取token

时间:2020-07-17 11:35:46      阅读:100      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!