lsekfe 发表于 2021-3-17 09:54:01

Web UI自动化测试之验证码登录

系统登录是开启web ui自动化测试的关键一步。随着安全意识的加强,验证码登录已经成为各大web应用的必备防范措施,其目的是保护web应用安全,一般防止机器大规模注册,机器暴力破解数据密码等危害。那么,在我们的web ui自动化中,如何实现或者跳过验证码登录系统呢?下面简单介绍几种方法。

  一、OCR识别验证码登录方法
  OCR (Optical Character Recognition,光学字符识别),通过图像识别和机器学习识别图片中的字符。将OCR技术应用到web应用验证码登录的步骤时:截取验证码图片、使用OCR技术识别字符、将字符填充到验证码输入框。提供OCR技术的API有如免费开源的tesseract(gitlub地址:https://github.com/tesseract-ocr/tesseract),有如收费的百度OCR API接口等等。
  由于安全性的原因,登录验证码越来越复杂,比如:英文、数字、中文、中英文混合等等,依赖OCR技术的匹配库需要机器学习不断更新,且对于测试人员而言,学习成本较高,再次不多做解释。
  本文主要介绍跳过验证码登录的方法。

  二、跳过验证码登录方法
  1.测试版本留后门
  一般有两种实现:开发人员提供关闭验证码登录的测试版本,或开发人员提供万能验证码的测试版本。
  该方法适合在交付前的阶段进行,切忌勿要将“留后门”版本作为正常版本交付。

  2.使用cookie跳过登录验证码
  1)什么是Cookie
  Cookie实际上是一小段的文本信息(key-value格式)。客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。如下图1、图2所示,在访问网页时,可以通过开发者工具的Network面板和Application面板,查看当前请求的Cookie信息。

http://www.51testing.com/attachments/2021/03/15326825_202103161334041LexU.jpg
图1 Network面板查看Cookie信息

http://www.51testing.com/attachments/2021/03/15326825_202103161334221HuPc.jpg
图2 Application面板查看Cookie信息

  2)使用Cookie跳过验证码登录举例
  以登录百度搜索账号为例,百度账号登录Cookie主要检验“BAIDUID”和“BDUSS”两个字段的值。上图1、图2为已经登录百度账号后的Cookie截图。通过图2获取“BAIDUID”和“BDUSS”的值,如下图3所示。且通过图3中的Expires/Max-Age列可以看到该Cookie的过期时间,如图3中,“BAIDUID”值到2021-9-27过期,意味着在过期时间前,都可以使用该值登录。

http://www.51testing.com/attachments/2021/03/15326825_202103161334222pjd7.jpg
图3 获取百度账号Cookie的BAIDUID值

  使用python的selenium模块,使用driver.add_cookie手动添加“BAIDUID”和“BDUSS”的值,跳过验证码登录百度账号。Python代码和运行结果如下图4所示。

http://www.51testing.com/attachments/2021/03/15326825_202103161334223C14y.jpg
图4 跳过验证码登录的Python代码和运行结果

  注意:在我们测试时,往往如上例登录百度账号一样,Cookie存在多个字段、值,具体哪些数据是用户名和密码的,或者是必需的,需要经过测试或询问开发人员得知。以防万一,可以将所有Cookie包含的字段、值全部添加到自动化脚本的driver.add_cookie中。

  3)与robotframework结合
  将测试脚本改为robotframework兼容的自定义关键字类脚本,如下图5所示。

http://www.51testing.com/attachments/2021/03/15326825_202103161334224kyIi.jpg
图5 百度免验证码登录的robotframwork自定义关键字

  将自定义关键字导入robotframwork,使用F5键,可以查看到自定义的关键字Log On,如下图6所示。至此,可以在robotframwork中使用免验证码登录的脚本进行测试。

http://www.51testing.com/attachments/2021/03/15326825_202103161334225ckXM.jpg
图6 robotframwork自定义关键字导入成功
页: [1]
查看完整版本: Web UI自动化测试之验证码登录