51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4949|回复: 0
打印 上一主题 下一主题

[原创] Web UI自动化测试之验证码登录

[复制链接]
  • TA的每日心情
    擦汗
    7 天前
  • 签到天数: 1027 天

    连续签到: 2 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-3-17 09:54:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    系统登录是开启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自定义关键字导入成功

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-10-7 03:29 , Processed in 0.067835 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表