【Selenium】UI自动化实践——输入验证码登录

news2024/11/15 5:46:47

文章目录

  • 实战题目
  • 解题方案

实战题目

使用python+selenium实现输入验证码的UI自动化。登录页面如图:
在这里插入图片描述

解题方案

验证码登录需要导入相关模块和库,本文使用的是opencv和ddddocr模块组合,导入方式采用pip3 install opencv-pythonpip3 install ddddocr,成功安装即可。

代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from common import do_time
import os
from time import sleep
import ddddocr

# 设置浏览器
option = webdriver.ChromeOptions()
option.add_experimental_option("prefs", {
    "download.prompt_for_download": False,
    "download.directory_upgrade": True,
    "safebrowsing.enabled": True,
    "credentials_enable_service": False,
    "profile.password_manager_enabled": False
})  #初始化Chrome的时候,不弹出密码框
option.add_experimental_option('excludeSwitches', ['enable-automation'])  #设置防止被检测为selenium
option.binary_location = r'D:\Software\Google\Chrome\Application\chrome.exe'
# 启动Chrome浏览器
driver = webdriver.Chrome(service=Service("../config/chromedriver.exe"), options=option)
driver.maximize_window()
driver.implicitly_wait(10)

# 打开登录网页
driver.get("https://sso-iot-uat.dianliantech.com/oauth/login")
sleep(3)
# 输入用户名和密码
driver.find_element(By.XPATH, '//*[@id="username"]').send_keys('username')
driver.find_element(By.XPATH, '//*[@id="password"]').send_keys('password')

# 验证码处理
# 找到验证码并将验证码以截图的方式保存
vcode_ele = driver.find_element('xpath', '//*[@id="verifyImg"]')
vcode_path = r'D:\Learn\pycharmProject\IOT\vcode\vcode.png'     #定义保存路径
vcode_ele.screenshot(vcode_path)   #截图保存至指定路径下

# 调用ddddocr框架,读取验证码,并填入输入框
ocr = ddddocr.DdddOcr()
with open(vcode_path, 'rb') as f:
    img_bytes = f.read()
vcode = ocr.classification(img_bytes)
driver.find_element(By.XPATH, '//*[@id="verifyCode"]').send_keys(vcode)

# 点击登录按钮
driver.find_element(By.XPATH, '//*[@id="loginSubmit"]').click()

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

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

相关文章

JMeter 工具安装以及简单使用

一、安装以及汉化 傻瓜式JMeter下载和环境配置及永久汉化-CSDN博客https://blog.csdn.net/weixin_45608163/article/details/136528719 二、发送GET请求 配置请求头: 配置该线程组的请求: 放在线程组统计,下面请求则共享配置

深度强化学习算法(三)(附带MATLAB程序)

深度强化学习(Deep Reinforcement Learning, DRL)结合了深度学习和强化学习的优点,能够处理具有高维状态和动作空间的复杂任务。它的核心思想是利用深度神经网络来逼近强化学习中的策略函数和价值函数,从而提高学习能力和决策效率…

光性能 -- 光功率平坦度

什么是光功率平坦度? 光功率平坦度指的是,光放各单波功率值与所有波平均值的功率差。 通过MCA(多通道光谱分析单元)扫描OMS(光复用段)上的所有单波光功率,计算经过光放的所有波长的功率平均值&#xff0…

OHIF viewers

OHIF Viewer 是一个开源的 DICOM(数字成像和通信医学)图像查看器,旨在为医疗影像学提供一个灵活且功能强大的解决方案。以下是 OHIF Viewer 的详细介绍,包括发展史、特点、优势、应用及目的等方面的信息。 1. 介绍 OHIF Viewer 是…

一个初始化的服务器,需要配置的相关软件以及环境(cuda、torch、conda)

文章目录 一个刚初始化的服务器需要下载的应用google chromeghelp 解压安装包解压大型zip文件 更新nvidia的驱动pycharm设置conda相关下载condaconda换源 torch相关安装torch包,浏览器下载包安装pytorch常用包安装 导包的方法 一个刚初始化的服务器需要下载的应用 …

【AI】:探索在图像领域的无限可能

欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 文章目录 图像识别与分类的飞跃图像生成与创造的艺术图像增强与修复的神奇图像搜索与理解的智能图像分析与挖掘的洞察图形生成技术1. 生成对抗网络(GANs)2. 卷积神经网络(CN…

Jenkins+Docker | K8S虚拟化实现网站自动部署 简单流程 未完待续,,

目录 大纲 1.Jenkins 的设置与 Docker、Kubernetes 集成指南 1. 创建新的Pipeline项目或Freestyle项目 1.1 创建Pipeline项目 1.2 创建Freestyle项目 2. 配置源代码管理 2.1 配置Git作为源代码管理工具 3. 配置构建触发器 4. 配置构建步骤 4.1 对于Pipeline项目 4.2…

Threadlocal+拦截器+JWT实现登录

很多数据库表都会有创建时间和修改时间,这个可以用mp的自动填充来实现。 也有修改人和更新人的字段,用户登录进来后,修改数据如何拿到修改人呢?每次操作不能把操作人的信息都携带者,那么如何拿到修改人的数据&#xf…

数学建模赛前备赛——模拟退火算法

一.什么是智能优化算法 智能优化算法本质上是一个优化算法,它通过不断优化模型的参数,使得系统表现达到最优,常见的只能优化算法有很多,比如说蚁群算法,遗传算法以及我们今天的主角——模拟退火算法。 二.模拟算法的前身——爬山算法 爬山算法是一种简…

【Python入门】第1节 基础语法

📖第1节 基础语法 ✅字面量✅注释✅变量✅数据类型🧊数据类型转换 ✅标识符✅运算符✅字符串扩展🧊字符串的三种定义方式🧊字符串拼接🧊字符串格式化🧊格式化的精度控制🧊字符串格式化方式2&…

equals与== 区别,全面总结如何使用(Java)

先理解JVM内存模型 虚拟机栈:JVM 运行过程中存储当前线程运行方法所需的数据, 指令、 返回地址本地方法栈:Java程序自动调用底层C/C函数库程序计数器:当前线程执行的字节码的行号指示器堆:存放我们申请的对象&#xff…

【Python 千题 —— 基础篇】入门异常处理

Python 千题持续更新中 …… 脑图地址 👉:⭐https://twilight-fanyi.gitee.io/mind-map/Python千题.html⭐ 题目描述 题目描述 编写一个程序,要求在处理用户输入时捕获各种异常情况,并为每种异常提供相应的处理方式。具体要求如下: 定义一个函数 divide_numbers(),它接…

php mail函数配置SMTP服务器发邮件的指南!

php mail函数安全性考虑?PHP mail()函数漏洞利用技巧? 在使用PHP进行开发时,发送邮件是一个常见的需求。使用php mail函数配置SMTP服务器发邮件,则是实现这一需求的有效途径。AokSend将详细探讨如何通过php mail函数来配置SMTP服…

Density-invariant Features for Distant Point Cloud Registration 论文解读

目录 一、导言 二、先导知识 1、FCGF 三、相关工作 1、深度学习的点云配准 2、对抗密度变化的方法 3、对比学习 四、GCL方法 1、U型曲线假设 一、导言 该论文来自于ICCV2023,上海交通大学提出的基于组对比学习的方案,来提取密度不变的几何特征&…

【终端IDPS】开源安全平台Wazuh之Wazuh Server

引言 Wazuh是一个开源的、免费的企业级安全监控解决方案,专注于威胁检测、完整性监控、事件响应和合规性。它由部署在受监控系统的端点安全代理和管理服务器组成,服务器收集并分析代理收集的数据。Wazuh支持多平台,包括Windows、Linux、macOS…

Linux学习笔记4 重点!网络排障命令

网络排障命令 命令行下载工具wget wget https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.20.17.tar.gz wget https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.20.17.tar.gz 限速下载 wget --limit-rate1M https://mirrors.edge.kernel.or…

【已解决】Vue Duplicate keys detected: ‘[object Object]’

【已解决】Vue Duplicate keys detected: ‘[object Object]’ 在Vue项目开发过程中,我们可能会遇到这样的报错:“Duplicate keys detected: ‘[object Object]’. This may cause an update error.”。这个错误通常发生在Vue的虚拟DOM进行渲染更新时&a…

上书房信息咨询:医疗满意度调研

随着人们生活水平的不断提高,医疗服务的需求日益增长。近期,上书房信息咨询受托完成了某市医疗市场的满意度调研,旨在深入了解市民对医疗服务的评价和需求,为提升医疗服务质量提供有力支持。 近年来,某市致力于推进医…

鸿蒙ArkTS语言学习(五):扩展(函数)@Extend@Styles@Builder

如何实现结构、样式复用呢? Extend:扩展组件(样式、事件) 作用:将相同组件复用的属性结构抽取封装,将不同的结构通过传入参数进行修改。 1. 定义语法 Extend(组件名) function 函数名{ ... } 2. 调用 组件…

一起学习LeetCode热题100道(60/100)

60.单词搜索(学习) 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那…