python+unittest+selenium保存图片

本文介绍如何在自动化测试中使用unittest和time模块获取当前时间,并基于此时间生成唯一图片名称,以便于保存测试过程中的关键截图。同时,详细解释了如何设置图片存储路径,确保截图按日期分类保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的:关键测试点保存图片,以备查看

一、获取本地时间

import unittest
import time

current_time = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))
current_time1 = time.strftime("%Y-%m-%d", time.localtime(time.time()))
print(current_time)
print(current_time1)
# 必须打印图片路径HTMLTestRunner才能捕获并且生成路径,\image\**\\**.png 是获取路径的条件,必须这样的目录
# 设置存储图片路径,测试结果图片可以按照每天进行区分

包:
1.unittest和time
定义时间变量:
1.time.strftime("%Y-%m-%d-%H-%M-%S,time.localtime(time.time())")

保存图片

# 截图保存
        # 新创建路径“.”表示当前整个.py文件的路径所在的位置,“\\”路径分割符,其中的一个是“\”表示转义字符
        pic_path = ("D:\\Pychrom project\\result\\image" + current_time + ".png")
        print(pic_path)
        time.sleep(3)
        self.driver.save_screenshot(pic_path)

方法说明:
pic_path定义一个路径
save_screenshot()截图并保存到指定路径

<think>好的,用户想用Selenium实现数字验证码的自动化测试,我需要整理步骤和工具。首先,验证码识别通常需要OCR库,比如ddddocr或者Tesseract。记得用户提到的引用里有用到ddddocr的classification方法,这可能是个不错的选择。接着,Selenium的基本操作包括打开页面、定位元素、输入信息,这些步骤用户提供的引用中有示例,比如点击密码登录和输入账号密码。 然后,处理验证码图片可能需要先截图或者直接下载图片。引用3里提到隐式等待和定位元素,可能需要用类似的方法找到验证码图片的位置,然后获取图片的二进制数据。保存图片后,用OCR库识别,得到数字字符串。 输入验证码的部分需要定位输入框,用send_keys方法填入识别结果。最后提交表单,检查是否登录成功。测试方法方面,单元测试可以用unittest框架,集成到持续集成工具里。异常处理要考虑验证码识别失败的情况,比如重试或者记录日志。 另外,用户提供的引用中有处理滑动验证码的例子,虽然用户的问题是关于数字验证码,但可能需要提到不同验证码类型的处理差异。测试数据方面,引用4提到了处理后的图片和测试数据链接,可能需要准备足够多的样本。最后生成相关问题,覆盖工具选择、处理流程、不同验证码类型、测试用例设计、异常处理以及测试数据收集方法。</think>### 使用Selenium实现数字验证码识别与验证的步骤 #### 1. **工具准备** - **Selenium**:用于自动化浏览器操作(如页面跳转、元素定位、表单提交) - **OCR工具**:推荐使用轻量级库`ddddocr`(中文识别率高)或`pytesseract`(需配置Tesseract引擎) - **图像处理库**:如`PIL`或`opencv-python`,用于预处理验证码图片[^1] #### 2. **实现流程** ```python from selenium import webdriver import ddddocr from PIL import Image import time # 初始化浏览器和OCR工具 driver = webdriver.Chrome() ocr = ddddocr.DdddOcr() # 访问目标页面 driver.get("https://example.com/login") # 定位验证码图片并截图保存 captcha_element = driver.find_element("xpath", "//img[@class='captcha-img']") captcha_element.screenshot("captcha.png") # 预处理图片(可选:去噪、二值化) image = Image.open("captcha.png").convert('L') # 转为灰度图 image.save("processed_captcha.png") # 识别验证码 with open("processed_captcha.png", "rb") as f: img_bytes = f.read() captcha_text = ocr.classification(img_bytes) # 输出识别结果[^1] # 输入验证码并提交 driver.find_element("id", "captcha_input").send_keys(captcha_text) driver.find_element("id", "submit_btn").click() # 验证结果(通过页面跳转或元素判断) time.sleep(2) assert "Dashboard" in driver.title, "验证码识别可能失败" driver.quit() ``` #### 3. **测试方法** - **单元测试**:使用`unittest`框架验证OCR识别准确率 ```python import unittest class TestCaptcha(unittest.TestCase): def test_ocr_accuracy(self): expected = "1234" actual = ocr.classification(Image.open("test_captcha.png").tobytes()) self.assertEqual(expected, actual) ``` - **集成测试**:通过CI/CD工具(如Jenkins)自动化执行全流程 - **异常处理**:添加重试机制(如识别失败时刷新验证码) #### 4. **优化方向** - **多模型融合**:结合`ddddocr`和`pytesseract`提高识别率 - **动态阈值处理**:使用OpenCV调整图像对比度 - **验证码类型适配**:针对扭曲、干扰线等特征定制预处理逻辑[^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值