怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

Posted 柠檬班软件测试

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!相关的知识,希望对你有一定的参考价值。



怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!


在我们做 App 自动化测试的时候,会发现很多场景下的元素没有 id、content-desc、text 等属性,并且有可能会碰到由于开发采用的是自定义 View,View 中的元素也无法识别到,很多的自动化测试框架对此类场景束手无策。

Appium 在 V1.9.0 中给我们带来了针对图像识别的全新图片元素定位的方法: -image

怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!


怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

在 Appium 中用到的图像识别库是 OpenCV,因为在 Appium V1.9.0 中-image查找元素方式才被引入进来,所以需要保证你有安装 V1.9.0 或以上版本的 Appium。

这里需要注意,Appium 图像识别的使用只能适用于通过 npm 安装 Appium 的方式,通过 Appium-desktop 安装 Appium 的方式是不适用的。

Step1:通过 npm 安装 Appium

/安装配置 Node.js
1.   下载对应系统和位数的node.js安装包https://nodejs.org/en/download/
2.   选择安装路径,我这里选择安装到D盘
3.   进入cmd,输入node-v以及npm-v检测(npm是node.js自带的包管理器)


怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

4.  指定npm安装的全局模块和缓存的路径,如果不指定默认会安装到C盘中【C:Users用户名 AppDataRoaming pm】

■ 在 nodejs 目录下新建【node_cache】和【node_global】目录

怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

■ 输入如下命令指定:

怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

5. 配置 node.js 环境变量

■ 在系统变量中新建【NODE_PATH】变量名,变量值为

【D:software odejs ode_global ode_modules】

■ 在系统变量【PATH】中追加

【%NODE_PATH%】

■ 将用户变量【Path】中原来的【C:Users用户名AppDataRoaming pm】
修改为【D:software odejs ode_global】

/安装 Appium

1. 设置 npm 淘宝镜像地址
怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

2. npm 通过全局的方式安装 Appium(默认下载安装最新版本 Appium)

怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

Step2:安装opencv4nodejs所需要的依赖

/安装 Cmake
1. 进入到 https://cmake.org/download/下载对应软件包,解压到任意目录
2. 找到系统变量Path

追加【D:softwarecmake-3.18.1-win64-x64in】,其中 cmake-3.18.1-win64-x64 是为 Cmake 解压之后的目录名

/安装 building tools

怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

Step3:Appium 中安装图像识别模块 opencv4nodejs

由于网络和各种环境问题的影响,通过官方推荐的【npm i -g opencv4nodejs】命令直接安装 opencv4nodejs 模块的话,会发现存在很多的问题。

https://www.npmjs.com/package/opencv4nodejs#how-to-install里面的说明,这里使用的是手动安装 OpenCV 的方式

1. 在系统环境变量中添加:【OPENCV4NODEJS_DISABLE_AUTOBUILD】变量名,变量值为【1】

2. 安装choco(windows上面的软件管理方案,可以解决部署软件复杂、容易出错问题)官网安装:https://chocolatey.org/install,打不开的同学给大家搬运过来:

■ 使用管理员运行 powershell,检查执行策略:执行指令【Get-ExecutionPolicy】

■ 如果结果为Restricted,那么执行指令【Set-ExecutionPolicy AllSigned】或者【Set-ExecutionPolicy Bypass-Scope Process】,直到结果为【RemoteSigned】

怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

■ 执行下面指令安装
怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!
3. 通过 choco 安装 OpenCV,执行下面的安装指令即可。

怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

完毕后 choco 默认安装在 C: ools 目录中。

4. 设置 OpenCV 环境变量

怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

5. 安装opencv4nodejs进入cmd,执行命令
怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

命令执行过程中,会对之前通过 choco 方式下载好的包进入编译,编译过程中可能会出现卡住,关掉 cmd 窗口重新再执行命令即可。


怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!


Step1:截取所需进行图像识别的元素


1. 将需要进行图像识别元素所在页面截屏

2. 通过 adb pull 命令拉取截屏图片出来

3. 用画图工具打开--划重点,一定要保证图片是原大小的,不能放大或者缩小图片

怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

4. 截取其中的元素保存为图片


Step2:代码实现


java-client 库中有提供了“MobileBy.image”以及“findElementByImage”方法,需要注意的是参数类型是 String 类型(以 MobileBy.image 为例)

怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

这里我们需要先将图片转换为 Base64 编码格式,转换代码如下:

怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

测试代码如下:

怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!


Step3:执行

1. 开启Appium Server,通过appium-a127.0.0.1-p4723命令启动

2. 启动设备,通过adb devices检测设备

3. 执行case

效果如下:

怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

Appium 图像识别的准确率是跟 Appium 的截图功能以及我们所提供的元素截图相关的,有时候我们会发现更换一台不同分辨率的手机之后脚本就会执行失败。Appium 提供了一些设置可以提高图像识别的准确率或加快图像识别的速度。

使用示例:

怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

以下设置项来自官方说明
怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!
怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET! 怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET! 怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET! 怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!


说明:本文为柠檬班歪歪老师原创,转载需注明出处



怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!
获取Appium相关视频资料

怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

可加多多老师微信

13327216354


或者扫描下方二维码

怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!

怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!





我就知道你「在看」

以上是关于怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!的主要内容,如果未能解决你的问题,请参考以下文章

Opencv 图像识别Android实战(识别扑克牌 4.图像识别扫盲)

用opencv做中文字符的识别怎么做好

怎样使用opencv识别数字和有限的英文字母以及字符的颜色

opencv 利用cv.matchShapes()函数实现图像识别技术

教你快速使用OpenCV/Python/dlib进行眨眼检测识别!

opencv 头发识别