前言

做软件自动化的时候,最怕就是在登录的时候遇到验证码。以前的经验是让开发设置一个万能码或者把验证码屏蔽掉。现在人工智能发展很快,有一些库可以帮助我们识别这验证码,将这些库引入到我们自动化代码中,就可以完成对验证码的识别,真正实现了产品环境下端到端的自动化。

下面介绍如何借助百度 OCR 文本识别库来演示识别验证码,直接登陆你自己的公积金账户。因为行为驱动(BDD)在自动化测试中已经非常流行,我们这次使用 Cucumber 开发自动化脚本。

准备

操作步骤

在 CukeTest 中创建 Web 项目。在 feature 文件中编辑场景描述:

# language: zh-CN

功能: 验证码登录

使用百度云提供的ORC识别验证

场景: 用户登录

假如浏览到登录网站 "https://persons.shgjj.com/"

当用户名输入"zhangsan",密码输入"123456"

那么使用百度OCR识别验证码并输入到验证码栏

在 step_definitions.js 根据 Selenium-Webdriver 的 api 实现对页面的操作:

Given(/^浏览到登录网站 "([^"]*)"$/, async function (url) {

await driver.get(url);

await driver.sleep(1000);

await driver.navigate().refresh();

});

When(/^用户名输入"([^"]*)",密码输入"([^"]*)"$/, async function (username, passwd) {

await driver.findElement({ css:'input[name="username"]'}).sendKeys(username);

await driver.findElement({ css:'input[name="password"]'}).sendKeys(passwd);

});

下面主要讲解如何识别验证码原理。

1.使用 selenium 对 Web 页面上的验证码截屏

2.将验证码图片传给百度 OCR

3.百度 OCR 返回图片上文字信息

4,拿到识别出来验证码值自动输入

主要代码:

var AipOcrClient = require("baidu-aip-sdk").ocr;

// 设置APPID/AK/SK

var APP_ID = "your id";

var API_KEY = "your key";

var SECRET_KEY = "your secretkey";

// 新建一个对象,建议只保存一个对象调用服务接口

var client = new AipOcrClient(APP_ID, API_KEY, SECRET_KEY);

//截屏

let image = await driver.findElement({ css:'img[src="VerifyImageServlet"]'}).takeScreenshot();

//OCR解析图片返回结果

let result = await client.generalBasic(image);

//获取图片文本

let imageCode = result.words_result[0].words;

//输入验证码文本

await driver.findElement({ css:'input[name="imagecode"]'}).sendKeys(imageCode);

项目运行

点击运行项目。在 Cucumber 报告截屏中可以看到能够成功获取到验证码的文本值并输入到了文本框。

软件测试自动化验证码,借助 OCR,协助绕过 web 自动化测试中一些简单验证码问题。...相关推荐

  1. python的web自动化框架实例_Selenium基于Python web自动化测试框架 -- PO

    关于selenium测试框架首先想到的就是PO模型,简单说下PO模型 PO模型的概念和理解: PO就是一个设计思想,将代码以页面为单位进行组织,针对这个页面上的所有信息.相关操作都放到一个类中,从而使 ...

  2. 【深度学习浅尝】web自动化测试中识别图片算术验证码

    本文参考实验楼课程:Python实现深度神经网络. 声明 我也是机器学习零基础,在本次实践中,仅仅是个人对机器学习的理解,由于水平有限,难免存在不对之处.因此对机器学习中涉及到的原理和概念还是建议参考 ...

  3. 自动化测试中的滑动验证码解决方案

    很多同学反馈,在web自动化的过程中,经常会被登录的验证码给卡住,不知道如何去通过验证码的验证. 今天专门给大家来聊聊验证码的问题,一般的情况下遇到验证码我们可以都可以找开发去帮忙解决,关闭验证码,或 ...

  4. Web自动化测试中的接口测试

    1.2.3 接口可测性分析 接口显而易见要比UI简单的都,只需要知道协议和参数即可完成一次请求,从自动化测试实施难易程度来看,有以下几个特征: 1)驱动执行接口的自动化成本不高:HTTP,RPC,SO ...

  5. Web自动化测试中使用groovy实现页面的对象化

    一. 现状 在自动化的过程中, 我们知道web自动化测试的开发和维护成本是比较高的,能否采用技术以及流程改进等手段来降低web自动化测试的成本呢? 我们先看看目前的实现方式,通常,实现步骤如下:(1) ...

  6. WEB登录页面加入简单验证码

    1.0 找了几张数字图片,在登录页面做了简单的验证码,如下图: 2.0 验证码正确,登录系统,否则返回登录页面 3.0 index.jsp: <%@ page language="ja ...

  7. php mysql设计中验证码的实现_利用PHP绘图函数实现简单验证码功能

    index.php __________________________________________________________________________________________ ...

  8. Python3调用图灵验证码 95%成功率识别网易易盾中文点选验证码 网易邮箱自动登陆 (非人工打码)

    最近遇到一个问题,需要频繁切换账号登陆网易邮箱,但是需要识别网易的中文验证码,比较麻烦.而且因为需要24h不间断的操作,所以没法使用人工打码平台,而且打码平台感觉也很贵--延迟又高.最后找到了一个可以 ...

  9. web前端中制作简单页面实现让文字在图片旁边

    如图所示 下面是源代码: <!DOCTYPE html> <html lang="en"> <head><meta charset=&qu ...

最新文章

  1. 芝枝.计算机与人文科学,2014人文并计算机学院选拔赛秩序册
  2. swift hidesBottomBarWhenPushed 设置界面
  3. windows cmd post请求_cmd命令集合
  4. jquery知识巩固
  5. mysql问题定位_十、MySQL的SQL优化之定位SQL的问题 - 系统的撸一遍MySQL
  6. javascript内存泄漏调试工具mac_node.js 内存泄漏的秘密
  7. 不同类型的变量与零值比较的方法
  8. 技术女性的是是非非(2)
  9. php 跟踪邮件,php – 电子邮件跟踪 – GMail
  10. matlab画图空值显示呈无色_MATLAB函数图像显示空白
  11. lg g2 android 5.0 rom,LG G2(D802)升级Flyme4.5图文教程
  12. 谷歌浏览器打开阅读清单
  13. 苹果计算机怎么显示汉字,苹果的safari浏览器怎样设定成中文显示
  14. mysql standby_数据库的 standby模式
  15. 【HZNUOJ】【C系列3.16】征战的Loy
  16. 英特尔Genuino101中国首发,共享经济式的创客生态圈新玩法
  17. 四、网络层(一)网络层的功能
  18. 国密算法 SM4 对称加密 分组密码 python实现完整代码
  19. 常说购买服务器,是购买安装linux系统还是windows系统,请问二者有啥区别
  20. Masonry中的mas_makeConstraints方法

热门文章

  1. 网站在线压力测试工具Load Impact
  2. 基于java调用adb命令安卓shell里面Read-only file system 问题解决
  3. Photoshop 2021 M1原生版没有扩展面板怎么办,ps 2021 m1版无法使用旧版插件
  4. 无线模块在分布式数据采集中的应用
  5. CDMA码分多址原理
  6. 计算生物化学中计算RMSD的方法
  7. 车辆运动控制(6)考虑侧倾约束
  8. 层次分析法---python实现
  9. 人工智能前沿——未来AI技术的五大应用领域
  10. android中串口转u口,阳光沙滩博客-Android——USB转COM口(CH340)与传感器进行通讯...