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

发表于:2021-3-17 09:24  作者:刘晓佳Rachel   来源:51Testing软件测试网原创

字体: | 上一篇 | 下一篇 |我要投稿 | 推荐标签: 软件测试技术 自动化测试

  系统登录是开启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信息。

图1 Network面板查看Cookie信息

图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过期,意味着在过期时间前,都可以使用该值登录。

图3 获取百度账号Cookie的BAIDUID值

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

图4 跳过验证码登录的Python代码和运行结果

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

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

图5 百度免验证码登录的robotframwork自定义关键字

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

图6 robotframwork自定义关键字导入成功

      版权声明:本文出自51Testing会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

评 论

论坛新帖



建议使用IE 6.0以上浏览器,800×600以上分辨率,法律顾问:上海信义律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2021, 沪ICP备05003035号
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪公网安备 31010102002173号

51Testing官方微信

51Testing官方微博

扫一扫 测试知识全知道