Selenium2学习-018-WebUI自动化实战实例-016-自

系统 1263 0

日常的 Web 网站开发的过程中,为提升登录安全或防止用户通过脚本进行黄牛操作(宇宙最贵铁皮天朝魔都的机动车牌照竞拍中),很多网站在登录的时候,添加了验证码验证,而且验证码的实现越来越复杂,对其进行脚本识别的难度也越来越高。这对我们自动化脚本编写带了非常的不便,那么如何解决登录时的验证码问题呢?经常有初学自动化脚本编写的小主们问及此问题。

此文主要针对如何解决自动化测试脚本中含登录态的操作问题,即如何降低验证码对自动化脚本编写过程中的解决方法进行分析和解决,并以实例演示(基于易迅网易迅账号登录)。解决验证码的问题,一般有以下几种方法:

1、 验证码识别技术(OCR)。通过验证码识别技术,识别登录过程中出现的验证码。此种方法不建议使用,浪费大量的人力物力,得不偿失。

2、万能验证码。例如:规定接收到的 ”aaron“ 为万能验证码,若服务器接收到了此验证码,则返回正确登录信息。此方法的缺陷是无法在线上使用,因为无法保证万能验证码的安全性。因而此方法一般应用于测试环境。

3、Cookie 越界登录。通过将用户登录的 cookie 信息添加至浏览器,直接越过登录操作(间接的跳过验证码输入),将用户的登录态添加到浏览器,即可进行相应的登录态用户操作。虽然此种方法有一定的局限性(受 cookie 的有效时间限制),俺还是比较推崇此种方法。

上述第一种方法,非常简单,在此就不再赘述了;第二种方法,有兴趣的小主大牛们可以尝试一下。下面主要以第三种方法为实例演示,基于易迅网易迅账号登录的 cookie 添加。

闲话少述,小二上码。。。敬请各位小主参阅,希望能对您在日常的 WebUI 自动化脚本编写有一定的启发和帮助。若有不足或错误之处,敬请大神指正,不胜感激!

        
           1
        
        
          /**
        
        
           2
        
        
           * Aaron.ffp Inc.


        
        
           3
        
        
           * Copyright (c) 2004-2015 All Rights Reserved.


        
        
           4
        
        
          */
        
        
           5
        
        
          package
        
        
           main.aaron.demo.cookie;


        
        
           6
        
        
           7
        
        
          import
        
        
           java.io.BufferedReader;


        
        
           8
        
        
          import
        
        
           java.io.File;


        
        
           9
        
        
          import
        
        
           java.io.FileReader;


        
        
          10
        
        
          import
        
        
           java.util.Date;


        
        
          11
        
        
          12
        
        
          import
        
        
           main.aaron.sele.core.TestCase;


        
        
          13
        
        
          14
        
        
          import
        
        
           org.openqa.selenium.Cookie;


        
        
          15
        
        
          import
        
        
           org.testng.Assert;


        
        
          16
        
        
          import
        
        
           org.testng.annotations.AfterClass;


        
        
          17
        
        
          import
        
        
           org.testng.annotations.Test;


        
        
          18
        
        
          19
        
        
          /**
        
        
          20
        
        
           * Add cookie to web browser


        
        
          21
        
        
           * 


        
        
          22
        
        
           * 
        
        
          @author
        
        
           Aaron.ffp


        
        
          23
        
        
           * 
        
        
          @version
        
        
           V1.0.0: autoSeleniumDemo main.aaron.demo.cookie UseCookieLogin.java, 2015-6-19 15:53:53 Exp $


        
        
          24
        
        
          */
        
        
          25
        
        
          public
        
        
          class
        
         UseCookieLogin 
        
          extends
        
        
           TestCase{


        
        
          26
        
        
          private
        
        
          final
        
         String f_cookie = 
        
          this
        
        .PROJECTHOME + 
        
          this
        
        .FILESEPARATOR + "cookie" + 
        
          this
        
        .FILESEPARATOR + "browser.data"
        
          ;


        
        
          27
        
        
          private
        
         String baseUrl = "http://www.yixun.com/"
        
          ;


        
        
          28
        
        
          29
        
        
              @Test


        
        
          30
        
        
          public
        
        
          void
        
        
           useCookieLogin(){


        
        
          31
        
        
          this
        
        .webdriver.get(
        
          this
        
        
          .baseUrl);


        
        
          32
        
        
          33
        
        
          try
        
        
           {


        
        
          34
        
        
          //
        
        
           clean the invalid cookie
        
        
          35
        
        
          this
        
        
          .webdriver.manage().deleteAllCookies();


        
        
          36
        
        
          37
        
        
          //
        
        
           create file object
        
        
          38
        
                     File f = 
        
          new
        
         File(
        
          this
        
        
          .f_cookie);


        
        
          39
        
        
          40
        
        
          //
        
        
           read file
        
        
          41
        
                     FileReader fr = 
        
          new
        
        
           FileReader(f);


        
        
          42
        
                     BufferedReader br = 
        
          new
        
        
           BufferedReader(fr);


        
        
          43
        
        
          44
        
        
          //
        
        
           store row cookie info
        
        
          45
        
        
                      String line;


        
        
          46
        
        
          47
        
        
          //
        
        
           add cookie to web browser
        
        
          48
        
        
          while
        
         ((line = br.readLine()) != 
        
          null
        
        
          ) {


        
        
          49
        
                         String[] item = line.split(";"
        
          );


        
        
          50
        
        
          51
        
        
          if
        
         (item.length != 6
        
          ) {


        
        
          52
        
        
          continue
        
        
          ;


        
        
          53
        
        
                          }


        
        
          54
        
        
          55
        
        
          for
        
         (
        
          int
        
         i = 0; i < item.length; i++
        
          ) {


        
        
          56
        
                             String name = item[0
        
          ];


        
        
          57
        
                             String value = item[1
        
          ];


        
        
          58
        
                             String domain = item[2
        
          ];


        
        
          59
        
                             String path = item[3
        
          ];


        
        
          60
        
                             Date expiry = 
        
          null
        
        
          ;


        
        
          61
        
        
          boolean
        
         isSecure = 
        
          new
        
         Boolean(item[5
        
          ]);


        
        
          62
        
        
          63
        
        
          //
        
        
           create cookie object
        
        
          64
        
                             Cookie cookie = 
        
          new
        
        
           Cookie(name, value, domain, path, expiry, isSecure);


        
        
          65
        
        
          66
        
        
          //
        
        
           add cookie to web browser
        
        
          67
        
        
          this
        
        
          .webdriver.manage().addCookie(cookie);


        
        
          68
        
        
                          }


        
        
          69
        
        
                      }


        
        
          70
        
        
          71
        
        
                      br.close();


        
        
          72
        
                 } 
        
          catch
        
        
           (Exception e) {


        
        
          73
        
        
                      e.printStackTrace();


        
        
          74
        
                     Assert.fail((e.getMessage() == 
        
          null
        
        )? ""
        
          :e.getMessage());


        
        
          75
        
        
                  }


        
        
          76
        
        
          77
        
        
          this
        
        .webdriver.get(
        
          this
        
        
          .baseUrl);


        
        
          78
        
        
              }


        
        
          79
        
        
          80
        
        
              @AfterClass


        
        
          81
        
        
          public
        
        
          void
        
        
           afterClass(){


        
        
          82
        
        
          this
        
        
          .webdriver.close();


        
        
          83
        
        
          this
        
        
          .webdriver.quit();


        
        
          84
        
        
              }


        
        
          85
        
         }
      
易迅网易迅账号 cookie 添加实战实例演示源代码

关于如何获取登录的 cookie 信息数据并保存,请参阅 Selenium2学习-017-WebUI自动化实战实例-015-获取浏览器中的 cookie 信息

PS:小主们在应用以上源码时,需要将源码中的 cookie 文件位置修改为本地合法路径才可:private final String f_cookie = this.PROJECTHOME + this.FILESEPARATOR + "cookie" + this.FILESEPARATOR + "browser.data";

 

至此, WebUI 自动化功能测试脚本 第 016-自动化脚本编写过程中的登录验证码问题 顺利完结,希望此文能够给初学 Selenium 的您一份参考。

最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^

Selenium2学习-018-WebUI自动化实战实例-016-自动化脚本编写过程中的登录验证码问题


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论