• 12
  • 13
分享
  • Web UI自动化测试之验证码登录——软件测试圈
  • 曼倩诙谐 2021-04-02 10:41:30 字数 1666 阅读 4132 收藏 13

  系统登录是开启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-1.jpg

图1 Network面板查看Cookie信息

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

1-3.jpg

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

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

1-4.jpg

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

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

  3)与robotframework结合

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

1-5.jpg

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

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

1-6.jpg

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


作者:刘晓佳Rachel   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   测试人员为了测试某个特定场景,往往需要在测试环境数据库中插入特定的测试数据来满足需求;  性能测试时,常需要在测试环境生成大量可用测试数据来支持性能测试;  建设持续集成持续交付体系时,我们往往也需要在测试环境生成测试数据来保障自动化用例可以持续稳定的运行。  因此,如何在测试数据库批量生成大量可用的测试数据就成为了测试领域一个关键而难解决的问题,本文就来讲讲测试数据批量生成工具的一种实现方案。  测试数据生成的难点  测试数据生成主要难点大致可以归结为以下几个方面:  <1>编写大量的sql语句费事耗力。  <2>由于主键、外键和业务本身的逻辑约束,很难通过写sq...
            0 0 1437
            分享
          •   断言介绍与使用  性能测试中较少用到断言。断言会增加脚本执行时间,但是接口测试中断言是必备的。什么是断言?其实就是功能测试中常说的预期结果和实际结果是否相等。  响应断言  ·JSON Assertion  · Size Assertion  · JSR223 Assertion  · XPath Assertion  · Compare Assertion  断言持续时间  · HTML Assertion  · MD5Hex断言  · SMIME Assertion  XML断言  · XML Schema...
            0 0 1611
            分享
          • 读者提问:面试时被问,你印象中最深刻的 BUG ,举个例子说明一下。该如何回答比较好呢?阿常回答:建议剖析如下类型的 BUG:1、找一些复杂因素导致的棘手问题。2、找一些外因,或者底层逻辑,导致的 BUG。3、找一些,团队一群人,搞了几天才发现的 BUG。4、找一些,对业务影响程度、范围较大的 BUG。「举例」1、某BUG,在测试环境问题,在线上环境也没问题,就固定某几个用户有问题;通过排除法,排除了版本兼容、客户端硬件机型兼容、网络问题 等,最后发现,居然是用户做了某操作导致了连锁问题,复现场景,极其苛刻 。2、某BUG,测试环境没问题,在线上环境,你们测试也没问题,多数客户也没问题,就某用...
            0 0 12211
            分享
          •   质量是什么?  怎么做好质量把控?  质量检测需要那些工具,怎么做流程是什么?  质量由谁来控制  质量到底什么程度才算好  质量的最终含义是什么?  大家如果没有认真思考过我们上面提出的问题之前请大家闭着眼睛跟我们一起思考下,质量在软件测试过程中起到了什么样的关键性作用,质量在软件中的里程碑是什么  什么是质量:  如果对于其他行业来说,质量是什么,是不是可以通俗易懂的理解为是这个物品出库的一个基本标本和最高标准,是否满足用户的基本使用过程和一些更高的满足用户的需求产品  软件测试中的质量:  软件测试中的质量太多解释,但在这快我想用度量进行讲解,在测试过程中一个产品要满足上线的要求的不...
            0 0 2043
            分享
          •   软件测试行业是我国近些年兴起的行业之一,因此很多人都想要知道目前软件测试就业前景怎样?值不值得入?  其实就软件测试前景可以从以下几个方面来分析:  1、互联网发展需求  在这万物互联、生活事事都软件化智能化的时代,软件测试不管何时何地都会占有一席重要之地的,所以也许其他行业会被替代,但是软件测试不会。  2、需求量大  基本上任何一个成型的互联网公司都是需要软件测试工程师的,而根据有关数据的调查,软件测试行业每年以30万人才缺口递增,所以整个市场缺口是非常大的。  3、入门门槛相对较低  零基础可入门,代码能力要求相对来说较低,就拿小编的朋友来说,他在做测试员工作之前,是一家小公司的运营...
            0 0 673
            分享
      • 51testing软件测试圈微信