验证码的产生就是为了防止机器人攻击:为了保护网站免受机器人自动化脚本的攻击,开发人员可能会在某些关键操作,如用户注册、登录、表单提交等过程中要求用户输入验证码。这样可以确保只有真正的用户能够进行操作。
而我们做自动化测试的时候又难免遇到验证码阻栏,如何才能处理验证码呢?
1.如果可以对代码进行修改的情况下,我们可以要求开发团队给一个去除验证码的版本,这是较为省时省力的方法,基于其他功能的测试需求,不可能因处理验证码消耗大多数时间。
2.可以使用万能验证码,可以要求开发者在验证码区域遇到特定的验证码时如8888给予通行。然后再修改部分脚本即可。
3.当你前两个都无法使用时,可以尝试当脚本遇到验证码时要先进行等待,然后我们要人工输入动态的验证码,这种方法非常的费力,但在较少次数测试的情况可以暂时处理验证码带来的阻拦。
4.可以使用图文识别工具:有一些第三方的验证码识别工具和服务可用于自动化测试中的验证码处理。这些工具使用图像识别技术来自动解析验证码。可以将验证码图像提交给这些工具,然后将返回的验证码结果用于填写验证码字段。请注意,使用第三方工具时需要评估其准确性和可靠性。
常见的工具为:
-
Tesseract OCR:Tesseract是一个开源的OCR(Optical Character Recognition,光学字符识别)引擎,具有很好的验证码识别能力。它支持多种编程语言,包括Python、Java、C++等,可以通过API调用来实现验证码识别。
-
pytesseract:pytesseract是一个基于Tesseract的Python库,提供了简单易用的接口来进行验证码识别。它可以在Python脚本中轻松地使用Tesseract OCR引擎来处理验证码图像。
-
OpenCV:OpenCV是一个强大的计算机视觉库,提供了丰富的图像处理和图像识别功能。您可以使用OpenCV的图像处理技术来处理验证码图像,例如提取图像特征、二值化处理等,以辅助验证码的识别过程。
-
第三方接口和服务:有一些付费的第三方接口和服务提供了验证码识别的功能。您可以将验证码图像提交给这些服务,并获取返回的验证码结果。一些常见的服务提供商包括Anti-Captcha、DeathByCaptcha等。
需要注意的是,验证码识别工具的准确率可能会受到多种因素的影响,例如验证码的复杂程度、图像质量、干扰线等。对于某些复杂或特定类型的验证码,可能需要专门的处理和算法来提高识别准确性。
5.如果网站把验证码存于session或cookie中可以通过调用内存中存储的session等来获取图文中的验证码。