Web自动化框架中验证码识别处理全攻略,让测试更得心应手!

前言:

随着Web应用程序的不断发展,自动化测试已成为项目开发中必不可少的一环。然而,验证码的出现却经常会使自动化测试变得更具挑战性。为了解决这个问题,我们需要一种方法来自动识别和处理验证码,从而提高自动化测试的效率和准确性。本文将介绍如何封装一个Web自动化框架,并集成验证码识别处理功能。

一. Web自动化测试框架搭建

1. 选择一个自动化测试工具

有许多的自动化测试工具可以选择,比如Selenium、Appium等等。我们选择Selenium作为我们的自动化测试工具,因为Selenium拥有强大的浏览器支持和Active Element Detection等很多好用的功能。

2. 安装环境

- Python3.x:Selenium是Python编写的,在使用之前需要安装Python3.x。

- Selenium:在Python环境下使用Selenium需要安装Selenium包。可以使用pip命令进行安装。

pip install selenium

3. 初始化一个Selenium驱动

在安装完成Selenium模块之后,就可以拿到一个WebDriver的对象了。我们使用WebDriver连接到一个浏览器实例,并加载我们要测试的网页。

from selenium import webdriverdriver = webdriver.Chrome()
driver.get('http://tempuri.org')

这时,我们可以看到Chrome浏览器自动打开并打开了“http://tempuri.org”这个网站。

二. 添加自动化测试用例

1. 编写测试脚本

编写一个简单的Selenium测试脚本,用以添加一个新用户并且验证用户能否成功登录:

def test_add_user():# 查找用户登录界面的"用户名"和"密码"输入框
username_input = driver.find_element_by_name('username')
password_input = driver.find_element_by_name('password')# 输入用户名和密码
username_input.send_keys('username')
password_input.send_keys('password')# 记录当前 URL
login_url = driver.current_url# 点击登录按钮
driver.find_element_by_id('submit').click()# 获取当前 URL
current_url = driver.current_url# 验证登录成功与否
assert current_url != login_url

通过Selenium提供的find_element_by_*系列的方法,我们可以定位页面中的元素并进行操作。

2. 运行测试脚本

添加完测试脚本后,只需要运行测试脚本即可开展自动化测试。

test_add_user()
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

三. 验证码识别与处理

验证码一般用于防止机器恶意攻击,而这在自动化测试中是个大问题。通过一些常见的验证码形式和对应的处理方式,我们可以提高自动化测试的识别率和效率。

1. 验证码种类

目前常见的验证码种类有图形验证码、中文验证码、计算验证码、滑动验证码等种类,不过最常见的是图形验证码。

2. 验证码处理方式

我们可以使用PIL库对识别到的验证码进行预处理,从而提高识别率。对于某些情况下无法识别的验证码,则通常需要手动打码了。以下是图形验证码预处理的基本步骤:

- 转灰度:将彩色的验证码转成单一的灰度。

- 二值化:通过Sobel算法,对灰度图像进行边缘检测,并进行二值化。

- 降噪:去除二值化后图像中噪声点等干扰信息。

- 切割:将验证码进行切割成单个字符,然后对单个字符进行识别。

下面我们来看一个实现了验证码识别处理的自动化测试脚本。假设我们要测试的网站包含了一个图形验证码,我们可以先对验证码进行预处理,然后再输入验证码。

import requests
from PIL import Image
import pytesseractdef get_verify_code_img(url):
"""
获取验证码图片
"""
response = requests.get(url=url)
img = Image.open(BytesIO(response.content))
return imgdef preprocessing_verify_code(img):
"""
预处理验证码图片
"""
# 转换成灰度图
img = img.convert('L')
# 二值化
threshold = 160
img = img.point(lambda x: 255 if x > threshold else 0)
# 去除噪声
img = img.filter(ImageFilter.MedianFilter(size=3))
return imgdef recognize_verify_code(img):
"""
识别验证码
"""
text = pytesseract.image_to_string(img, lang='eng')
return textdef test_with_verify_code():
# 验证码图片URL
img_url = 'http://captcha.com/verify_code'
# 获取验证码图片
img = get_verify_code_img(img_url)
# 预处理验证码图片
img = preprocessing_verify_code(img)
# 识别验证码
verify_code = recognize_verify_code(img)
# 输入验证码并登录
driver.find_element_by_id('verify_code_input').send_keys(verify_code)
driver.find_element_by_id('submit').click()test_with_verify_code()

在这个例子中,我们使用了requests库获取验证码图片,使用PIL库对验证码图片进行预处理,然后使用pytesseract库进行识别。最后,我们将识别出的验证码输入到网页中,完成自动化测试。

四. 结语

本文介绍了如何封装一个Web自动化框架,并集成了验证码识别处理功能。需要注意的是,对于不同的验证码类型,预处理和识别的方法可能会有所不同,需要根据实际情况进行调整和优化。通过这种方式,我们可以提高自动化测试的效率和准确性,实现更高质量的测试。

END今天的分享就到此结束了~!点赞关注不迷路! 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超越巨头:Zephyr-7B领跑7B级模型竞赛,开源且笔记本可运行

引言 在AI界的大语言模型(LLM)竞赛中,Zephyr-7B作为Hugging Face H4团队的最新力作,展现了令人瞩目的技术突破。它不仅性能超越了700亿参数的LLaMA2模型,更引人注目的是,这一开源模型可在常规笔记本电脑上…

羊大师提示,把工作和生活分开轻松拥有幸福人生

羊大师提示,把工作和生活分开轻松拥有幸福人生 工作对于每个人来说是必不可少的一部分,但是在忙碌的工作中也不能忘记了生活的美好。如何平衡好工作和生活,成为了许多人追求的目标。 我们都知道,工作和生活之间的平衡是非常重要…

什么品牌的猫罐头好吃?五大性价比高的猫罐头测评

不知不觉已经养猫两年啦,大大小小也算是尝试过很多猫罐头了。一开始我也是踩了很多坑,各种踩雷。我深知猫罐头的各种门道,新手一不小心就会着道了。 作为一个经营猫咖5年的老板,大促期间我总能捡漏,屯到一大波好吃又放…

Guitar Pro吉他软件2024使用教程汇总

Guitar Pro 8是一款功能强大的指法阅读器和编辑器,它允许您编辑吉他、贝斯和尤克里里的乐谱和指法谱,并为鼓或钢琴创建背景音轨。轻松创建、播放和共享您的标签!快速的进行乐谱播放并进行练习,也可以进行编辑操作,允许…

简单的绑定发布事件

在绑定事情之前,我们需要对我们的需求进行分析;判断我们是否需要同时存在条件。 发布动态的时候,分为以下三种情况: ① 输入了标题,没有图片,可以发布动态 ②输入了图片,没有标题,…

Echarts自定义样式实现3D柱状图-长方体-圆柱体,两种样式

Echarts自定义样式实现3D柱状图-长方体-圆柱体&#xff0c;两种样式 效果图代码series配置项目 效果图 长方体 柱状体 代码 <!--此示例下载自 https://echarts.apache.org/examples/zh/editor.html?cbar3d-dataset&gl1 --> <!DOCTYPE html> <html lang…

数据分析师的职业规划与参考资料

数据分析师如何规划 参考&#xff1a;超详细的数据分析职业规划 一个产品的出现可以从业务和技术两个方向分析&#xff0c;业务需求技术支持产品的出现。 如果把职业也当成一个产品&#xff0c;也有类似的分析&#xff0c; 其中业务也就是领域&#xff0c;即这个业务领域的特点…

Windows/Linux双系统安装(双系统独立分盘)

一、固态硬盘、机械硬盘及U盘概述 &#xff08;一&#xff09;机械硬盘[1][3] 硬盘驱动器&#xff08;Hard Disk Drive&#xff0c;HDD&#xff09;&#xff0c;又称“机械硬盘”或“传统硬盘”&#xff0c;是电脑上使用刚性的旋转磁性盘片为基础的非依电性存储器&#xff0c;…

电脑备忘录小工具怎么添加?怎么在电脑桌面添加备忘录?

作为一名天天用电脑办公的上班族&#xff0c;如果你需要对某个项目或问题进入深入思考&#xff0c;想要快速记录想法和思路&#xff0c;这时候会选择什么样的记事方式呢&#xff1f;如果你需要记录常用的工作文字内容、工作注意事项、项目流程、待办的工作安排等&#xff0c;用…

【Spring】Spring IoC

Spring IoC 文章目录 Spring IoC1. Spring 简介2. Spring IoC2.1 概述2.2 Spring IoC 容器具体接口和实现类2.3 Spring IoC 容器管理配置方式 3. Spring IoC / DI 实现步骤4. 基于XML配置方式管理组件4.1 组件&#xff08;Bean&#xff09;信息声明配置&#xff08;IoC&#xf…

ac转dc电源芯片SM7025 支持12V/18V输出电压

AC转DC电源芯片是一种能够将交流电转换为直流电的重要器件&#xff0c;广泛应用于电子设备和电源系统中。它可以提供稳定的直流电源&#xff0c;为设备的正常运行提供保障。 AC转DC电源芯片的工作原理是利用内部的整流、滤波、变压器和稳压等电路&#xff0c;将输入的交流电转换…

苹果拒绝上架提示: “Guideline 2.1 - Performance - App Completeness”被拒排查方向解决

准则 2.1 - 性能 - 应用完整性 我们在您的应用程序中发现了一个或多个错误。具体来说&#xff0c;应用程序启动到一个空白屏幕。请查看下面的详细信息并完成后续步骤。 查看设备详细信息&#xff1a; - 设备类型&#xff1a;iPhone - OS版本&#xff1a;iOS 17.0 后续步骤 …