python自动化登录(测试篇)

news/2024/5/20 23:22:01

起初是想抓取下请求看能不能做模拟登录。无奈发现,目标网站的请求数据是加密过的,而且网站代码也是编译后的代码。要从编译后的代码中提取加密算法。我的第一想法是明知不可为而不为。但是转念一想,何不试试python大法。

1.前期准备

         python我是真不会,属于半吊子的那种。作为纯前端开发人员,我只是基于兴趣以及开发语言万变不离其宗的换套不换药的至理,闲暇之余,看了看php,看了看java,看了看易语言,看了看python,仅此而已。

        所以,我分享的都是一些小工具,类似代码片段的拿来即用的东西。对于初学者或者新手也是通俗易懂的东西吧。

python版本:3.12   window10安装python附带的版本。该版本自带pip,推荐

安装依赖库pip install selenium  (自动化模拟操作依赖)

                      pip install colorama   (控制台输出字体颜色依赖)

2.模拟测验

        这里测试的网址是航空网站,仅测试。该博客仅做技术分享以及技术思维扩展。切勿进行非法行为。

login.py代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from colorama import init, Fore# 启动 Chrome 浏览器
driver = webdriver.Chrome()# 打开登录页面
driver.get('https://b2c.csair.com/B2C40/modules/bookingnew/manage/login.html?lang=cn&returnurl=https://coep.csair.com/enterprise/#/personalEmailAuth?recommendCode=&actionType=')
print(Fore.RED + "开始模拟登录,请等待...")
tab = driver.find_element(By.CLASS_NAME, 'member-login')
tab.click()
driver.implicitly_wait(2)
# 在用户名和密码输入框中输入
account = driver.find_element(By.ID, 'userId')
account.send_keys('xxxx')# 等待第一个输入框出现并点击
first_input = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, 'passWordPH'))
)
first_input.click()  # 点击第一个输入框使其获得焦点# 等待第二个输入框出现
second_input = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, 'passWord'))
)# 在第二个输入框中输入密码
second_input.send_keys('xxxx')check = driver.find_element(By.ID, 'loginProtocol')
check.click()print(Fore.GREEN + "账号:xxxx")
print(Fore.GREEN + "密码:xxxx")# 提交登录表单
btn = driver.find_element(By.ID, 'mem_btn_login')
btn.click()# 等待页面加载完成,然后抓取响应内容
# 页面加载完成后,获取页面源代码
WebDriverWait(driver, 10).until(# 这里需要一个条件,比如等待某个特定元素出现EC.presence_of_element_located((By.CLASS_NAME, 'xo-input-container'))
)
cookies = driver.get_cookies()
# 打印获取到的 cookie 信息
for cookie in cookies:#   print(Fore.BLUE + f"Name: {cookie['name']}, Value: {cookie['value']}")if cookie['name'] == 'cs1246643sso':print(f"token: {cookie['value']}")breakprint(Fore.RED + "登录结束,关闭浏览器!")
# 关闭浏览器
driver.quit()

原理:这里是利用自动化模拟网页登录操作,通过
driver = webdriver.Chrome()来打开浏览器,然后输入网址打开网页,再通过获取一系列标签元素进行触发点击事件。再把登录得cookie等相关信息进行控制台打印输出。

实操结果:

3.结束语

         有时候通过一些小例子,更能方便我们理解。比如什么叫python自动化。这个小例子就是了。所以每个语言都有它的长处和魅力所在,现在知道python为什么适合做大数据分析和自动化测试了吧。自动化的适用场景就相当于一个盒子无法从内部破解,里面的机关太过于繁琐和复杂。但是这个盒子里面再怎么巧妙,提供给人的用途都是很直观的,就比如汽车。你只需要会开车就行,而不需要去学如何造车。人开车久了难免会累,这时候自动驾驶就来了。就相当于自动化了。

        工欲善其事必先利其器!


http://www.mrgr.cn/p/18000417

相关文章

贪心算法在单位时间任务调度问题中的应用

贪心算法在单位时间任务调度问题中的应用 一、引言二、问题描述与算法设计三、算法证明四、算法实现与效率分析五、C语言实现示例六、结论 一、引言 单位时间任务调度问题是一类经典的优化问题,旨在分配任务到不同的时间槽中,使得某种性能指标达到最优。…

多模态大模型

想了很久,最后还是写了这篇。 LLaVA 贡献多模态指令数据。当下关键的挑战之一是缺乏视觉与语言组成的指令数据。本文提出了一个数据重组方式,使用 ChatGPT/GPT-4 将图像 - 文本对转换为适当的指令格式; 大型多模态模型。研究者通过连接 CLIP 的开源视觉编码器和语言解码器 L…

27 - 数据传送指令

---- 整理自B站UP主 踌躇月光 的视频 文章目录 1. CPU 电路2. 数据传送指令的几种情况3. 实验工程4. 实验结果 1. CPU 电路 2. 数据传送指令的几种情况 # program.asm; 1. ; MOV A, 5;; 2. ; MOV A, B;; 3. ; MOV A, [5];; 4. ; MOV B, 6 ; MOV A, [B]; 5. ; MOV [0x2f], 5;; …

【Qt 学习笔记】Qt常用控件 | 显示类控件 | Calendar Widget的使用及说明

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 显示类控件 | Calendar Widget的使用及说明 文章编号&am…

机器学习-K近邻算法-KNN

1 K-紧邻算法简介 1.1 什么是K-近邻算法 直观上理解,就是根据距离的远近来判断你所处于的类别。 但是,也会存在一些问题,距离最近的样本所属于的类别与你需要判断的类别可能不是同一种类别。 1.1 KNN概念 K Nearest Neighbor算法又叫做KNN算法,这个算法是机器学习里面比较经…

voc数据集转换成coco数据集

在我做一些算法学习的时候,需要将voc数据集转coco放到yolo当中训练,但是在网上找了很多个都不是很好用,要不是会报错,要不是根本不能跑起来。为了节省在学习算法小伙伴的时间,我分享我在工作常常用的voc转coco的脚本。前言 作为本系列第一篇文章,我分享一个模型训练过程中…

Java设计模式 _创建型模式_原型模式(Cloneable)

一、原型模式 1、原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能比较好。一般对付出较大代价获取到的实体对象进行克隆操作,可以提升性能。 2、实现思路: (1)、需要克隆的…

Kafka学习笔记01【2024最新版】

一、Kafka-课程介绍 官网地址:Apache KafkaApache Kafka: A Distributed Streaming Platform.https://kafka.apache.org/ kafka 3.6.1版本,作为经典分布式订阅、发布的消息传输中间件,kafka在实时数据处理、消息队列、流处理等领域具有广泛…

论文解读(MAML)《Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks》

Note:[ wechat:Y466551 | 可加勿骚扰,付费咨询 ] 论文信息论文标题:Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks论文作者:Chelsea Finn、Pieter Abbeel、Sergey Levine论文来源:2017 论文地址:download 论文代码:download视屏讲解:click1-摘要…

【网络原理】TCP协议的连接管理机制(三次握手和四次挥手)

系列文章目录 【网络通信基础】网络中的常见基本概念 【网络编程】网络编程中的基本概念及Java实现UDP、TCP客户端服务器程序(万字博文) 【网络原理】UDP协议的报文结构 及 校验和字段的错误检测机制(CRC算法、MD5算法) 【网络…

实验24-基于LSTM的实体提取

版本python3.6 tensorflow版本为tensorflow==1.14 运行结果:

实验25-基于sklearn构建One-hot词向量

版本python3.7 tensorflow版本为tensorflow-gpu版本2.6 运行结果:

实验26-1基于gensim构建word2vec词向量

版本python3.7 tensorflow版本为tensorflow-gpu版本2.6 运行结果:

什么是 Antimalware Service Executable,为什么它会在我的 PC 上运行?

Microsoft Defender Antivirus 是一种反恶意软件工具,其后台进程是“Antimalware Service Executable”。 两者都默认安装在 Windows 10 中。 这个软件,有时称为 MsMpEng.exe,是 Windows 操作系统的一部分。 在本文中,我们将深入并解释有关此 Windows 进程的所有信息。 什么…

实验22-4-jieba常用方法

版本python3.7 tensorflow版本为tensorflow-gpu版本2.6 运行结果:

后端开发的学习路线

所谓的后端开发,一般指的是后端服务器开发。针对服务器开发,可以用各种语言 Java、C++、PHP、Python、Go 都可以。 学习方向和路线很重要,比起具体的技术细节,可复制的经验、清晰的学习路线,是大部分人更加需要的东西。 朝着正确的方向努力,否则只会离目标越来越远,不是…

WPF 资源基础

动态资源/静态资源 UI代码 <Window x:Class"WpfApp1.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/ex…

m考虑时偏影响的根升余弦滤波器matlab仿真

1.算法仿真效果 matlab2022a仿真结果如下: 2.算法涉及理论知识概要根升余弦滤波器(Root-Raised Cosine Filter, RRC Filter)是一种广泛应用在通信系统中的脉冲整形滤波器,特别是在数字调制传输系统中,用于消除码间干扰(Inter-Symbol Interference, ISI),确保符号边界清…

Java线程池让使用线程变得更加高效

使用一个线程需要经过创建、运行、销毁三大步骤&#xff0c;如果业务系统每个线程都要经历这个过程&#xff0c;那势必带来过多不必要的资源消耗。线程池就是为了解决这个问题而生&#xff0c;需要时就从池中拿取&#xff0c;使用完毕就放回去&#xff0c;池化思想通过复用对象…

EDevourer风险分析报告及典型用户

1.风险分析人: 客户/用户反馈多样性:由于用户群体可能包括不同年龄段、英语水平和游戏喜好的人群,因此他们的反馈可能多样化,需要花费更多精力去理解和整合这些反馈。 团队成员经验和技能:团队成员在游戏开发的时侯有可能会遇到许多bug或者遇到设想的功能无法实现,可能导…