Web自动化中常用的跳过验证码操作

news2024/11/25 12:45:24

目录

  前言

  通过cookies值登录

  通OCR识别验证码

  总结


  前言

        自动化测试中经常需要避免手动输入验证码的操作,因为这会增加测试成本,耗费测试人员的时间。通过自动化程序跳过验证码,可以减少测试时间,提高测试效率。

  安静今天通过几个实例来给大家介绍下,web自动化中怎么解决验证码的问题。

  通过cookies值登录

  我们都知道cookies是保持登录的一种状态,那是否可以通过cookies进行登录呢?

  selenium中也有获取cookies信息操作,通过将cookies保存在text中,在我们执行登录操作时,进行将cookies添加进去,这个时候就能通过cookies完成登录,从而跳过验证码内容。

  思路是清晰了,先进行通过selenium进行获取cookies值信息,这里安静使用的方法是,通过chrome配置信息,selenium可以在已经打开的浏览器中进行操作,获取cookies信息。

  或者在常规打开浏览器页面中强制等待30秒,手动输入验证码和验证码信息,然后在获取cookies信息。

  通过打开cmd打开新的浏览器窗口(这里一定要将chrom的安装路径配置到环境变量中)。

输入命令:chrome --remote-debugging-port=8210 --user-data-dir="F:\chrome_config"
# chrome:表示启动chrome浏览器
# remote-debugging-port:表示执行浏览器端口
# 8210为个人设置的端口
# --user-data-dir="F:\chrome_config":表示新建一个浏览器配置信息。

  在终端打开的浏览器中进行登录,登录过后,在通过selenium进行获取登录cookies值。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import json
options = Options()
# 启动的浏览器地址
options.debugger_address ='127.0.0.1:8210'
# 将浏览器配置信息进行添加
driver = webdriver.Chrome( chrome_options=options)
print('目前浏览器标题:'+driver.title)
x = json.dumps(driver.get_cookies())
with open('cookies.txt','w') as f:
    # 将cookies保存为json格式,保存下来,方便下次使用。
    f.write(json.dumps(driver.get_cookies()))

  这里时候我们已经将登录的cookies获取下来了,再次通过selenium进行访问登录页面时候,通读取txt文件信息,将cookies添加进去就可以完成登录了。

from selenium import webdriver
import json
driver = webdriver.Chrome()
driver.get('http://127.0.0.1/pro/user-login-L3Byby8=.html')
with open('cookies.txt','r') as f:
    # 使用json读取cookies,进行添加cookies
    cookies_list = json.load(f)
    for cookie in cookies_list:
        driver.add_cookie(cookie) 
# 刷新页面   
driver.refresh()

  通过执行发现,我们已经完成了登录操作,从而跳过了验证码。

  通OCR识别验证码

  这里安静简单的介绍下通过OCR进行识别输入类型的验证码,从而完成登录操作。

  在平台中找到关于OCR识别的开源接口,然后通过selenium进行获取并保存图片信息,在通过OCR的开源接口信息进行识别图片内容,最后将识别的结果输入到验证码输入框中。

import requests
from selenium import webdriver
import base64
import time
driver = webdriver.Chrome()
# 打开登录页面
driver.get('http://v3pro.houjiemeishi.com/PC/pages/login/login.html')
# 获取验证码图片地址
img_url = driver.find_element_by_class_name('codeImg').get_attribute('src')
# 通过请求图片地址获取图片的base64编码
img_r = requests.get(url=img_url)
base64_data = base64.b64encode(img_r.content).decode()
bodys = {
    "v_pic": base64_data,
    "pri_id": 'ne',
    "number": 4
}
# 这个参数可以通过尖叫数据进行自行申请
headers = {
    'appcode': "xxxxxxx",
    "appKey": "xxxxxx",
    "appSecret": "xxxxxxx"
}
# 请求验证码接口信息,返回验证码数字
url = 'http://apigateway.jianjiaoshuju.com/api/v_1/yzmCustomized.html'
r = requests.post(url, headers=headers, data=bodys)
tt = r.json()['v_code']
time.sleep(1)
# 验证码输入框输入验证码信息
driver.find_element_by_class_name('ipt2').send_keys(tt)

  通过执行发现,我们已经在验证码输入框中输入了正确的验证码信息。

  总结

  其实跳过验证码的方法还有很多种,安静只是介绍了最简单最常用的两种方法进行跳过,当然最最最简单的肯定是让研发自动化测试阶段进行去除,或者用一个万能验证码进行输入。

 作为一位过来人也是希望大家少走一些弯路,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

留【自动化测试】即可【自动化测试交流】:574737577(备注ccc)icon-default.png?t=N5F7http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=hyGITtX0cD6EN96WzR_d5b1qRSZ-Dpyy&authKey=76TmCzaAQ%2BOwLn6umFFZeVxKheSwyaUVwymd%2FRvdARY6cvCSCgZ1qOSe3w%2Bsh61f&noverify=0&group_code=574737577

 

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

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

相关文章

增值税高企业发展受限怎么办?采用此方法可化险为夷!

增值税高企业发展受限怎么办?采用此方法可化险为夷! 《税筹顾问》专注于园区招商,您的贴身节税小能手,合理合规节税 企业的发展,一方面需要依靠自身的生产经营,那么另一方面就需要在一些支出上尽可能的开源…

如何用 Python 给树莓派 Pico RP2040 编程

使用 MicroPython,仅用 8 行代码,我们就可以实现 LED 闪烁程序。 下载安装 Python IDE:Thonny Thonny 是 一个面向初学者的 Python IDE 环境,自带 Python,相对简单,比较容易上手。对于树莓派 Pico 开发&am…

实验篇(7.2) 12. 站对站安全隧道 - 仅一方发起连接(FortiGate-IPsec) ❀ 远程访问

【简介】上一篇实验发现,两端都是可以远程的公网IP的话,两端防火墙都可以发出连接请求,并且都能够连通。这样的好处是安全隧道不用随时在线,只在有需求时才由发起方进行连接。但是现实中很多情况下只有一端公网IP可以远程&#xf…

实战:求年月日时间前后遇到的坑和解决方式

这里写目录标题 前言正确实例:错误实例: 需求 前言 这周接到一个时间转换任务需要处理,本来没什么问题,后来完成后发现时间有偏差,又重写了一遍代码,感觉很有记录必要性,希望看过的小伙伴可以避…

代理ip会不会影响网络速度和稳定性

代理ip是一种可以帮助用户隐藏真实IP地址的技术,通常使用代理服务器作为中介来连接互联网。代理ip在网络安全、隐私保护、跨区域访问等方面都有广泛的应用。但是,使用 代理ip是否会影响网络速度和稳定性这一问题也一直备受关注。下面是一些有关代理ip对网…

k8s部署redis集群

写在前面 一般来说,REDIS部署有三种模式。 单实例模式,一般用于测试环境。哨兵模式集群模式 后两者用于生产部署 哨兵模式 在redis3.0以前,要实现集群一般是借助哨兵sentinel工具来监控master节点的状态。 如果master节点异常&#xff0c…

计算机网络管理-网络管理软件SNMPc软件的下载,安装和使用教程说明

⬜⬜⬜ 🐰🟧🟨🟩🟦🟪(*^▽^*)欢迎光临 🟧🟨🟩🟦🟪🐰⬜⬜⬜ ✏️write in front✏️ 📝个人主页:陈丹宇jmu &am…

树莓派4B移植5G模块驱动(RG200U-CN)

1、查看Linux内核版本 uname -r2、根据内核版本在Github上下载Linux内核源码(最好再Github上确定一下有没有这个分支) git clone --depth1 https://github.com/raspberrypi/linux --branch rpi-5.15.y3、下载依赖库 $ sudo apt update$ sudo apt inst…

【白话机器学习系列】白话 Dropout

白话 Dropout 文章目录 什么是Dropout理解缩放举个例子 什么是Dropout Dropout 是神经网络的一种正则化技术,它在训练时以指定的概率 p p p(常见值为 p 0.5 p0.5 p0.5)丢弃一个单元(连同连接)。在测试时&#xff…

【JUC并发编程】

本笔记内容为狂神说JUC并发编程部分 目录 一、什么是JUC 二、线程和进程 1、概述 2、并发、并行 3、线程有几个状态 4、wait/sleep 区别 三、Lock锁(重点) 四、生产者和消费者问题 五、八锁现象 六、集合类不安全 七、Callable ( 简单 )…

windows10企业版安装西门子博途V15---03安装仿真软件

1、选点这个 2、进入03.SIMATIC_PLCSIM_Advanced_V3,这个是什么东西,它就是真实的硬件设备的仿真软件,也就是说,现在没有真正的PLC硬件,PLC是这样的东西,它是一个硬件产品,而现在不可能去买个硬…

TRUNCATE 语句到底因何而慢?

作者通过源码分析 truncate 语句形成慢 SQL 的原因和解决方案,并与 MySQL 5.7就相关实现逻辑进行对比。 问题现象 收到反馈某测试环境执行批量操作时,有 truncate 语句存在于慢查询日志中。担心上线后可能影响数据库,请求 DBA 配合分析。 …

第八章 模型篇:transfer learning for computer vision

参考教程: transfer-learning transfer-learning tutorial 文章目录 transfer learning对卷积网络进行finetune把卷积网络作为特征提取器何时、如何进行fine tune 代码示例加载数据集构建模型fine-tune 模型模型作为feature extractor 定义train_loop和test_loop定…

【K8S系列】如何高效查看 k8s日志

序言 你只管努力,其他交给时间,时间会证明一切。 文章标记颜色说明: 黄色:重要标题红色:用来标记结论绿色:用来标记一级论点蓝色:用来标记二级论点 Kubernetes (k8s) 是一个容器编排平台&#x…

【C#每日一记】多线程实现的贪吃蛇原理—不允许你还不知道

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

软件测试技能,JMeter压力测试教程(一)

目录 前言 一、安装Java环境 二、安装JMeter环境 三、启动JMeter脚本测试 四、查看报告文件 前言 使用jmeter做压测的时候,在windows上不太稳定,所有一直在 Linux 服务器上使用 jmeter 做压力测试 本篇记录下 Linux上搭建 jmeter 环境&#xff0c…

分布式学习第二天 redis学习

目录 1. 数据库类型 1.1 基本概念 1.2 关系/非关系型数据库搭配使用 2. Redis 2.1 基本知识点 2.2 redis常用命令 2.4 redis数据持久化 3 hiredis的使用 4. 复习 1. 数据库类型 1.1 基本概念 关系型数据库 - sql 操作数据必须要使用sql语句 数据存储在磁盘 存储的…

如何使用CDN给OSS做加速详解

意义 用户直接访问OSS资源,速度会受到OSS下行带宽以及Bucket地域的限制,若通过CDNOSS的方式进行访问,带宽上限更高,并且可以将OSS的资源缓存至就近的CDN节点,通过CDN节点进行分发,可以缩短网络传输距离&am…

Linux学习之CentOS(八)--Linux系统的分区概念

不知不觉已经记录了8篇Linux学习随笔了,虽然还是漂浮在Linux系统的表面,还有很多很多没有学,但是坚持学下去、坚持写下去就是成功的!!!! 在讲Linux系统分区之前,首先得介绍一下硬盘…

【SpringCloud】2.微服务的熔断和降级

目 录 1. 熔 断1.1 发生场景1.2 熔断实现1.3 熔断测试 2. 降 级2.1 发生场景2.2 降级处理2.3 降级测试 在 上篇博客,我们完成了项目的基本搭建工作,那这篇博客就来实现一下微服务的熔断和降级。 1. 熔 断 1.1 发生场景 在前面,我们用 spri…