前端测试 web 测试中绕开验证码登陆的方式

周小丽 · 2016年12月23日 · 最后由 左子穆,pitt 回复于 2017年10月11日 · 3909 次阅读

web 自动化测试中让测试者感到困惑的是登陆验证码,每次都不一样。现在推荐一种绕开验证码登陆的方式,其实就是将 web 浏览器获取的登陆 cookie 加载到程序中就可以了,这样程序就会认为你已经登陆,就可以跳过登录的操作了。具体代码如下:

private static void getLogin(String url,String cookie,WebDriver driver){
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    driver.get(url);  // 需手动访问一次测试页面获得cookie
    driver.manage().deleteAllCookies();   // 删除cookie里的内容
    Cookie ck = new Cookie("PHPSESSID", cookie);   // 初始化已经保存了登录信息的cookie
    driver.manage().addCookie(ck);  // webdriver添加cookie
    driver.get(url);   // 访问后就会发现已经登录成功了
    //driver.manage().window().maximize();  //将浏览器最大化
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);;
    Set<Cookie> cookies = driver.manage().getCookies();
    System.out.println(String.format("Domain -> name -> value -> expiry -> path"));
    for (Cookie c : cookies)
        System.out.println(String.format("%s -> %s -> %s -> %s -> %s", c.getDomain(), c.getName(), c.getValue(),c.getExpiry(), c.getPath()));
}
共收到 15 条回复 时间 点赞

不错, 这是个最短最实用的技能.

这个通用于所有的登录验证么?

这样的方法我之前试过一次,每次打开浏览器,cookie 都被清空。。。

#3 楼 @lose cookie 写入本地文件,再读出来

—— 来自 TesterHome 官方 安卓客户端

#2 楼 @kasi 是通用的

#3 楼 @lose 浏览器可以设置

并不是所有的架构支持这种方式,无状态的服务可能不支持

请教下有遇到这个 You may only set cookies for the current domain 这个异常吗?,怎么解决的

#8 楼 @potato 不好意思 没遇到哦

如果 cookie 过期了就没辙了。。

#10 楼 @hjhjhghghg 是的,需要再次手动登陆一次

这个怎么弄的 我不会啊

#12 楼 @testerwan 直接拷贝过去就可以了

楼主能否给一个稍微完整的示例代码参考一下,谢谢!

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册