爱收集资源网

Web自动化测试中的验证码封装技巧

网络 2023-06-28 01:01

前言:

随着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 webdriver
driver = webdriver.Chrome()
driver.get('http://tempuri.org')

这时,我们可以看见Chrome浏览器手动打开并打开了“”这个网站。

二. 添加自动化测试用例

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 pytesseract
def get_verify_code_img(url):
"""
获取验证码图片
"""
response = requests.get(url=url)
img = Image.open(BytesIO(response.content))
return img
def 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 img
def recognize_verify_code(img):
"""
识别验证码
"""
text = pytesseract.image_to_string(img, lang='eng')
return text
def 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自动化框架,并集成了验证码辨识处理功能。需要注意的是,对于不同的验证码类型,预处理和辨识的方式可能会有所不同,需要按照实际情况进行调整和优化。通过这些方法,我们可以提升自动化测试的效率和准确性,实现更高质量的测试。

谷歌浏览器不出验证码
上一篇:火车头插件发布遇问题,zblog-php解决方案 下一篇:没有了
相关文章