selenium自动化的时候网址重定向问题的解决思路

您所在的位置:网站首页 edge浏览器重定向次数过多会怎么样 selenium自动化的时候网址重定向问题的解决思路

selenium自动化的时候网址重定向问题的解决思路

2024-07-11 01:22| 来源: 网络整理| 查看: 265

一、背景

因为我们系统是用企业微信扫码登录的,就输入网址 management-xxx.xxx.com以后,url就会重定向到企业微信授权的url :https://open.work.weixin.qq.com/wwopen/sso/3rd_qrConnect?state=xxx&redirect_uri=management-xxx.xxx.com ,直到获取auth_code之后登录成功,然后再跳回首页。 但是因为重定向导致domain变了,cookie一直塞不进去,提示“invalid token domain” 在这里插入图片描述

二、解决方案

1、尝试把domain替换成微信的domain 虽然可以登录成功,但是那个domain毕竟不是我们系统的,所以失败了

2、找开发mock一个授权扫码登录的接口 这个方式可能可行,但是我找的开发对这块不熟悉,说不确定是否可以实现

3、增加等待时长,强制让它不跳转 既然selenium只是通过地址栏里面的域名来写入cookie的,那么我们只需要通过某种方法来中断selenium 的加载使地址栏保持登录后的域名网址即可。这个方法就是python的try except的异常捕捉方法! 参考文章:关于使用selenium免登陆爬取网页时,自动跳转登录页面从而导致写cookie失败的解决办法 代码如下:

import json import time import yaml from selenium import webdriver ''' 获取cookie ''' class TestMALogin: def setup_class(self): self.driver = webdriver.Chrome() self.driver.implicitly_wait(10) self.driver.maximize_window() # def teardown_class(self): # self.driver.quit() def test_save_cookies(self): """ 保存cookies :return: """ # 1.访问MA的登录页面 self.driver.get("management-xxx.xxx.com") # self.driver.get("management-xxx.xxx.com") # 2.手机扫码 time.sleep(10) # 3.获取浏览器的cookies cookies = self.driver.get_cookies() print(cookies) # 4.保存cookies with open("./cookies2.yaml", "w") as f: yaml.safe_dump(data=cookies, stream=f) def test_get_cookie(self): """ 植入cookie跳过登录 :return: """ try: self.driver.set_page_load_timeout(1) # 1.访问MA首页 self.driver.get("management-xxx.xxx.com") except: self.driver.set_page_load_timeout(10) # 2.获取本地的cookie with open("./cookies2.yaml", "r") as f: cookies = yaml.safe_load(f) # 3.植入cookie for c in cookies: self.driver.add_cookie(c) # 4.访问MA首页 self.driver.get("management-xxx.xxx.com") time.sleep(5)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3