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

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

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

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

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

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

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

 /**
* Aaron.ffp Inc.
* Copyright (c) 2004-2015 All Rights Reserved.
*/
package main.aaron.demo.cookie; import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.Date; import main.aaron.sele.core.TestCase; import org.openqa.selenium.Cookie;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.Test; /**
* Add cookie to web browser
*
* @author Aaron.ffp
* @version V1.0.0: autoSeleniumDemo main.aaron.demo.cookie UseCookieLogin.java, 2015-6-19 15:53:53 Exp $
*/
public class UseCookieLogin extends TestCase{
private final String f_cookie = this.PROJECTHOME + this.FILESEPARATOR + "cookie" + this.FILESEPARATOR + "browser.data";
private String baseUrl = "http://www.yixun.com/"; @Test
public void useCookieLogin(){
this.webdriver.get(this.baseUrl); try {
// clean the invalid cookie
this.webdriver.manage().deleteAllCookies(); // create file object
File f = new File(this.f_cookie); // read file
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr); // store row cookie info
String line; // add cookie to web browser
while ((line = br.readLine()) != null) {
String[] item = line.split(";"); if (item.length != 6) {
continue;
} for (int i = 0; i < item.length; i++) {
String name = item[0];
String value = item[1];
String domain = item[2];
String path = item[3];
Date expiry = null;
boolean isSecure = new Boolean(item[5]); // create cookie object
Cookie cookie = new Cookie(name, value, domain, path, expiry, isSecure); // add cookie to web browser
this.webdriver.manage().addCookie(cookie);
}
} br.close();
} catch (Exception e) {
e.printStackTrace();
Assert.fail((e.getMessage() == null)? "":e.getMessage());
} this.webdriver.get(this.baseUrl);
} @AfterClass
public void afterClass(){
this.webdriver.close();
this.webdriver.quit();
}
}

易迅网易迅账号 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-自动化脚本编写过程中的登录验证码问题的更多相关文章

  1. Selenium2学习-016-WebUI自动化实战实例-014-Selenium 窗口选择

    在日常的 WebUI 自动化测试脚本编写过程中,经常需要打开新的页面,或者在多个打开的页面之间进行切换,以对页面元素进行相应的操作,以模拟用户的行为,实现 UI 的自动化测试.在过往的时间中,经常有初 ...

  2. Selenium2学习-014-WebUI自动化实战实例-012-Selenium 操作下拉列表实例-div+{js|jquery}

    之前已经讲过了 Selenium 操作 Select 实现的下拉列表:Selenium2学习-010-WebUI自动化实战实例-008-Selenium 操作下拉列表实例-Select,但是在实际的日 ...

  3. Selenium2学习-010-WebUI自动化实战实例-008-Selenium 操作下拉列表实例-Select

    此文主要讲述用 Java 编写 Selenium 自动化测试脚本编写过程中,对下拉列表框 Select 的操作. 下拉列表是 Web UI 自动化测试过程中使用率非常高的,通常有两种形式的下拉列表,一 ...

  4. Selenium2学习-009-WebUI自动化实战实例-007-Selenium 8种元素定位实战实例源代码(百度首页搜索录入框及登录链接)

    此 文主要讲述用 Java 编写 Selenium 自动化测试脚本编写过程中,通过 ID.name.xpath.cssSelector.linkText.className.partialLinkTe ...

  5. Selenium2学习-008-WebUI自动化实战实例-006-易迅登录之 frame 处理

    此文主要讲述用 Java 编写 Selenium 自动化测试脚本编写过程中,在因 frame 标签导致页面定位失败,提示 NoSuchElementException 时的,页面元素定位前的 fram ...

  6. Selenium2学习-032-WebUI自动化实战实例-030-JavaScript 在 Selenium 自动化中的应用实例之五(高亮标示元素)

    在自动化脚本编写过程中,操作元素之前,需要对元素进行高亮显示(通过修改元素的边框样式),同时进行截图,以记录操作的元素对象.在实际应用中较为少见,通常用于演示,或者发生错误时的屏幕截图捕捉,用于错误报 ...

  7. Selenium2学习-028-WebUI自动化实战实例-026-获取页面元素值或者元素属性值

    在自动化脚本编写过程中,经常需要获取页面元素的文本进行判断,以便对于不同的文本进行不同的处理.比如:很多的购物网站,加入购物车的按钮是有多个状态的(加入购物车.到货通知.暂不销售等),那么在实际的操作 ...

  8. Selenium2学习-039-WebUI自动化实战实例-文件上传下载

    通常在 WebUI 自动化测试过程中必然会涉及到文件上传的自动化测试需求,而开发在进行相应的技术实现是不同的,粗略可划分为两类:input标签类(类型为file)和非input标签类(例如:div.a ...

  9. Selenium2学习-004-WebUI自动化实战实例-002-百度登录

    此文主要通过 百度登录 功能,进行 Selenium2 的实战实例讲解.文中所附源代码于 2015-01-17 23:33 亲测通过,敬请亲们阅览.同时,您也可参考此文进行其他网站(例如 京东.易迅. ...

随机推荐

  1. 升级到WP8必需知道的13个特性

    http://www.cnblogs.com/sonic1abc/archive/2012/11/28/2792467.html   Windows phone 8 SDK 已经发布一段时间了, 已经 ...

  2. Leetcode 第一遍刷完

    2014/10/15 Leetcode第一刷总算结束,时间拖太长了,希望第二遍能快一点,争取一个月能刷完第二遍??哈哈哈哈

  3. 【wikioi】1227 方格取数 2(费用流)

    http://www.wikioi.com/problem/1227 裸题,拆点,容量为1,费用为点权的负数(代表只能取一次).再在拆好的两个点连边,容量为oo,费用为0.(代表能取0) 然后向右和下 ...

  4. 【液晶模块系列基础视频】2.虚拟U盘

    [液晶模块系列基础视频]2.虚拟U盘 ============================== 技术论坛:http://www.eeschool.org 博客地址:http://xiaomagee ...

  5. 小组项目alpha发布的评价

    新蜂团队一直都特别努力,这节课我也看到了他们努力的结果--项目可以顺利运行,在两个同学试玩期间没有出现BUG,不知道玩游戏的同学的心情,反正我们在台下看得很开心的. 飞天小女警组的礼物挑选系统,是一个 ...

  6. JavaScript系列:常用方法

    文本框输入实时验证身份证号 charAt(索引)<=>indexOf(字符) <!DOCTYPE html> <head> <meta charset=&qu ...

  7. UVALive 7297 bfs

    题意 一个小偷偷到了项链 他想知道自己是否可以逃出去 地图中有一个小偷 一个警察 警察有一条狗 一开始 小偷和警察的移动速度都是1 当警察走到小偷经过过的地方时 警察会有一条狗嗅到小偷的气味并且以2的 ...

  8. Hrbustoj 2252 完全背包

    一个变形的完全背包 题是第一次团队赛的热身题...看别人博客看到这道题忽然就不会了 然后想了半天还是没想出来...上oj找了提交排名..发现自己弄出来的奇怪的办法居然用时最短... 问装m最低要多少的 ...

  9. SiteMesh装饰器使用总结

    SiteMesh是一个Java WEB项目的网页布局和修饰框架.使用SiteMesh后就不再需要在每个页面中都用<jsp:include>标签引入页头.页尾.导航等其他公用页面了. 可以将 ...

  10. jwplayer直播

    <div class='container'> <div class='row'> <div class='col-sm-10 col-md-10 col-sm-offs ...