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

一、背景

因为我们系统是用企业微信扫码登录的,就输入网址
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)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值