太原网站定制,超市网站建设费用,wordpress发布活动,做一个网上app软件多少钱前言#xff1a;
随着Web应用程序的不断发展#xff0c;自动化测试已成为项目开发中必不可少的一环。然而#xff0c;验证码的出现却经常会使自动化测试变得更具挑战性。为了解决这个问题#xff0c;我们需要一种方法来自动识别和处理验证码#xff0c;从而提高自动化测试…
前言
随着Web应用程序的不断发展自动化测试已成为项目开发中必不可少的一环。然而验证码的出现却经常会使自动化测试变得更具挑战性。为了解决这个问题我们需要一种方法来自动识别和处理验证码从而提高自动化测试的效率和准确性。本文将介绍如何封装一个Web自动化框架并集成验证码识别处理功能。
一. Web自动化测试框架搭建
1. 选择一个自动化测试工具
有许多的自动化测试工具可以选择比如Selenium、Appium等等。我们选择Selenium作为我们的自动化测试工具因为Selenium拥有强大的浏览器支持和Active Element Detection等很多好用的功能。
2. 安装环境
- Python3.xSelenium是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()
三. 验证码识别与处理
验证码一般用于防止机器恶意攻击而这在自动化测试中是个大问题。通过一些常见的验证码形式和对应的处理方式我们可以提高自动化测试的识别率和效率。
1. 验证码种类
目前常见的验证码种类有图形验证码、中文验证码、计算验证码、滑动验证码等种类不过最常见的是图形验证码。
2. 验证码处理方式
我们可以使用PIL库对识别到的验证码进行预处理从而提高识别率。对于某些情况下无法识别的验证码则通常需要手动打码了。以下是图形验证码预处理的基本步骤
- 转灰度将彩色的验证码转成单一的灰度。
- 二值化通过Sobel算法对灰度图像进行边缘检测并进行二值化。
- 降噪去除二值化后图像中噪声点等干扰信息。
- 切割将验证码进行切割成单个字符然后对单个字符进行识别。
下面我们来看一个实现了验证码识别处理的自动化测试脚本。假设我们要测试的网站包含了一个图形验证码我们可以先对验证码进行预处理然后再输入验证码。
import requests
from PIL import Image
import pytesseractdef get_verify_code_img(url):获取验证码图片response requests.get(urlurl)
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(size3))
return imgdef recognize_verify_code(img):识别验证码text pytesseract.image_to_string(img, langeng)
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自动化框架并集成了验证码识别处理功能。需要注意的是对于不同的验证码类型预处理和识别的方法可能会有所不同需要根据实际情况进行调整和优化。通过这种方式我们可以提高自动化测试的效率和准确性实现更高质量的测试。
今天的分享就到此结束了大家还有什么不懂的可以评论区下留言哈如果我的文章对你有所帮助的话可以点赞三联支持一下