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

news2024/11/20 10:32:59

一、背景

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/653483.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何制作数据可视化、数孪、安防、区域人流量识别+控制的项目?

制作与数据可视化、数字孪生、安防、区域人群识别和控制以及其他类似计划相关的项目需要仔细规划和执行。建议遵循以下通用框架来有效地开发这些项目: 定义项目目标:清楚地阐明项目目的和目标。确定要解决的具体问题、期望的结果以及衡量成功的关键绩效指…

vue3+ts+vite+electron打包exe

文章目录 一. 前言二. 准备写好的vue项目打包2.1 修改ts打包代码检测.这个比较烦人. 在package.json中 2.2 配置打包参数2.3 打包vue 三. 打包exe3.1 拉取electron官方demo3.2 下载打包插件3.3 在electron-quick-start项目中找到入口文件 main.js ,修改打包的文件路…

差值结构的运动

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入有3个节点,训练集AB各由5张二值化的图片组成,让B全是0,让差值结构的5行分别有0,1,2,2,2个1,3列分别有1,3&#xff0…

知了堂Java V9.0重磅升级,真的很硬核!

“2023年,Java还值得学吗?” 说实话,Java自1995年诞生起,至今还难逢敌手,没有任何编程语言能够取代它的地位。不过随着互联网、计算机技术的发展,Java应用领域越来越广泛,因此也对掌握这门语言…

Vue全家桶(二):Vue中的axios异步通信

目录 1. Axios1.1 Axios介绍1.2 为什么使用Axios1.3 Axios API1.3 Vue使用axios向服务器请求数据1.4 Vue使用axios向服务器提交数据1.5 Vue封装网络请求 2. 使用Vue-cli解决Ajax跨域问题3. GitHub用户搜索案例4. Vue-resource 1. Axios 1.1 Axios介绍 Axios 是一个开源的可以…

flexible.js + rem 适配布局

什么是:flexible.js ?? flexible.js 是手机淘宝团队出的移动端布局适配库不需要在写不同屏幕的媒体查询,因为里面js做了处理原理是把当前设备划分为10等份,但是不同设备下,比例还是一致的。要做的&#xf…

【亲测解决】import torch 出现段错误,报错信息 Segmentation fault

微信公众号:leetcode_algos_life import torch 出现段错误 【问题】【解决方案】 【问题】 安装pytorch-gpu版本,安装完成后,import torch发现报错直接返回,报错信息如下: Segmentation fault【解决方案】 Linux环境…

查看虚拟机网络IP和网关

查看虚拟网络编辑器和修IP地址: 查看网关: 查看windows:环境的中VMnet8网络配置(ipconfig指令): 查看linux的配置ifconfig: ping测试主机之间网络连通性: 基本语法 ping 目的主机(功能描述:测试当前服务器是否可以连接目的主机) 应用实例 测…

一秒教你搞定前端打包上传后路由404的问题!

1、问题描述 前端实现权限管理后,本地路由跳转正常,打包上传线上出现前404找不到路由路径问题 报如下错误: 2、错误原因 打包之后根路径变化,前端没有将获取到的用户菜单权限中的component进行转换,导致上传后路径错误 3、解决…

Gurobi许可证获取并部署到Pycharm中

获取Gurobi许可证 海外版(Gurobi)~ 可略过 海外Gurobi地址但是就算用高校身份注册还是无法获取许可证图例 原因;学校的网关没有将本校的 IP 地址标注为学术机构,那么会出现 Error 303/305 错误,IP 验证不会成功&…

第三章_基于zookeeper实现分布式锁

实现分布式锁目前有三种流行方案,分别为基于数据库、Redis、Zookeeper的方案。这里主要介绍基于zk怎么实现分布式锁。在实现分布式锁之前,先回顾zookeeper的知识点。 知识点回顾 Zookeeper(业界简称zk)是一种提供配置管理、分布式…

NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057

NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现update数据实时同步_实际操作05---大数据之Nifi工作笔记0044 具体的,之前已经写过,如何在NIFI中实现MySQL的增量数据同步,但是写的简单了,因为,比如在插入的时候,更新的时候,仅仅是写死的某…

第五节 利用Ogre 2.3实现雨,雪,爆炸,飞机喷气尾焰等粒子效果

本节主要学习如何使用Ogre2.3加载粒子效果。为了学习方便,直接将官方粒子模块Sample_ParticleFX单独拿出来编译,学习如何实现粒子效果。 一. 前提须知 如果参考官方示例建议用最新版的Ogre 2.3.1。否则找不到有粒子效果的示例。不要用官网Ogre2.3 scri…

【微信小程序开发】第 8 课 - 小程序 API 的 3 大分类

欢迎来到博主 Apeiron 的博客,祝您旅程愉快 ! 时止则止,时行则行。动静不失其时,其道光明。 目录 1、小程序 API 概述 2、小程序 API 的 3 大分类 3、总结 1、小程序 API 概述 小程序中的 API 是由宿主环境提供的,…

一款基于 SpringCloud 的电商商城系统,小程序+管理端一套带走

项目介绍 Smart Shop 是一款基于 Spring Cloud MybatisPlusXXL-JOBredisVue 的前后端分离、分布式、微服务架构的 Java 商城系统,采用稳定框架开发及优化核心,减少依赖,具备出色的执行效率,扩展性、稳定性高,H5/小程序…

pnpm + monorepo架构思想小试牛刀

写在前面 今天要写的是关于一种前端全新架构的方式,monorepo这是目前相对来讲比较新的一种前端架构,整好趁着最近在学,就利用这个平台记录一下学习的一个过程,上一篇文章更新的是react,后面也会一样更新,今…

深入理解Java虚拟机jvm-运行时数据区域(基于OpenJDK12)

运行时数据区域 运行时数据区域程序计数器Java虚拟机栈本地方法栈Java堆方法区运行时常量池直接内存 运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域 有各自的用途,以及创建和销毁的时间,有的…

持续改进与创新:水库大坝安全管理方式

随着工业的快速发展,大坝建设已成为经济发展的重要部分。然而,由于自然环境的破坏以及人类因素的干扰,大坝的安全问题备受关注。每年都有不少大坝事故爆发,造成无法预估的损失。据统计,截至2006年我国共有3260座水库已…

【AntDB数据库】AntDB数据库跨地域多中心部署

跨地域多中心部署 **** 某省核心账务库案例 **** 通信行业核心业务系统已经与某款国外成熟商业数据库深度捆绑多年,为改变这一现状,实现数据库“自主可控”的目标,某省经过多轮调研选型与评测最终选择AntDB分布式内存数据库进行核心产生系统…

Linux线程同步(上)

文章目录 1. 同步的概念2. 条件变量函数2.1 等待函数2.2 样例 3. 生产者消费者模型4. 阻塞队列4.1 模拟阻塞队列的生产消费模型4.2 构造函数和析构函数4.3 生产接口和消费接口4.4 创建线程进行测试 1. 同步的概念 互斥可能会导致一个执行流长时间得不到某种资源。也叫饥饿问题…