怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!
Posted 柠檬班软件测试
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!相关的知识,希望对你有一定的参考价值。
在我们做 App 自动化测试的时候,会发现很多场景下的元素没有 id、content-desc、text 等属性,并且有可能会碰到由于开发采用的是自定义 View,View 中的元素也无法识别到,很多的自动化测试框架对此类场景束手无策。
![怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!](https://image.cha138.com/20210403/47170c4b258a43b489e9c74306c3f161.jpg)
![怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!](https://image.cha138.com/20210403/bf107c867ed74417bc36254c341341c2.jpg)
在 Appium 中用到的图像识别库是 OpenCV,因为在 Appium V1.9.0 中-image查找元素方式才被引入进来,所以需要保证你有安装 V1.9.0 或以上版本的 Appium。
Step1:通过 npm 安装 Appium
![怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!](https://image.cha138.com/20210403/4fd5b4f76410400fb1a9031ccc34fc7c.jpg)
■ 在 nodejs 目录下新建【node_cache】和【node_global】目录
■ 输入如下命令指定:
5. 配置 node.js 环境变量
【D:software odejs ode_global ode_modules】
【%NODE_PATH%】
/安装 Appium
![怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!](https://image.cha138.com/20210403/b6781d6b94744d39812d0116d5e52f51.jpg)
2. npm 通过全局的方式安装 Appium(默认下载安装最新版本 Appium)
![怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!](https://image.cha138.com/20210403/9f457807890c42e287ac34f73b5d8035.jpg)
Step2:安装opencv4nodejs所需要的依赖
追加【D:softwarecmake-3.18.1-win64-x64in】,其中 cmake-3.18.1-win64-x64 是为 Cmake 解压之后的目录名
/安装 building tools
![怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!](https://image.cha138.com/20210403/cf9e35a84c3040368965749c142b95fc.jpg)
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】
![怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!](https://image.cha138.com/20210403/6493c7c4c4894e4aa2c7cf65edf85c90.jpg)
完毕后 choco 默认安装在 C: ools 目录中。
![怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!](https://image.cha138.com/20210403/1c73a1de3ed041c5b96ad4f716fdac29.jpg)
命令执行过程中,会对之前通过 choco 方式下载好的包进入编译,编译过程中可能会出现卡住,关掉 cmd 窗口重新再执行命令即可。
Step1:截取所需进行图像识别的元素
1. 将需要进行图像识别元素所在页面截屏
2. 通过 adb pull 命令拉取截屏图片出来
![怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!](https://image.cha138.com/20210403/f2b3e19e88104cc99a112799a2d238a3.jpg)
4. 截取其中的元素保存为图片
Step2:代码实现
这里我们需要先将图片转换为 Base64 编码格式,转换代码如下:
测试代码如下:
Step3:执行
1. 开启Appium Server,通过appium-a127.0.0.1-p4723命令启动
2. 启动设备,通过adb devices检测设备
3. 执行case
效果如下:
![怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!](https://image.cha138.com/20210403/588ae873e68844ebaa07385257746f59.jpg)
![怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!](https://image.cha138.com/20210403/100c8b6dc2b5499c9d2217256fb92fbb.jpg)
Appium 图像识别的准确率是跟 Appium 的截图功能以及我们所提供的元素截图相关的,有时候我们会发现更换一台不同分辨率的手机之后脚本就会执行失败。Appium 提供了一些设置可以提高图像识别的准确率或加快图像识别的速度。
使用示例:
![怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!](https://image.cha138.com/20210403/f272f19ba641497794e662aa735e9e92.jpg)
![怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!](https://image.cha138.com/20210403/4bc59132639a4bd9a5b9f85fb313357a.jpg)
![怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!](https://image.cha138.com/20210403/e4d27d29bb374155a625d297fb772a76.jpg)
![怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!](https://image.cha138.com/20210403/9d33be3a0bee46409c64dff3964cf837.jpg)
![怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!](https://image.cha138.com/20210403/45d05968ea8d4ab880564cbc9a8e6a67.jpg)
说明:本文为柠檬班歪歪老师原创,转载需注明出处
![怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!](https://image.cha138.com/20210403/1ab60118d512476f9b32b630d15cd13b.jpg)
可加多多老师微信
13327216354
或者扫描下方二维码
以上是关于怎么玩转Appium图像识别技术OpenCV,这波操作你必须GET!的主要内容,如果未能解决你的问题,请参考以下文章
Opencv 图像识别Android实战(识别扑克牌 4.图像识别扫盲)
opencv 利用cv.matchShapes()函数实现图像识别技术