appium+opencv环境配置使用findElementByImage

在新版本的appium中提供了findelementbyimage的方法。在测试过程中,也有遇到某些元素无法根据ID、name、xpath等查找。

所以根据图片查找元素是一个不错的解决方法。由于使用findelementbyimage需要依赖opencv,

下面记录以下在安装opencv环境的步骤和踩过的坑。

安装过程
安装步骤,非常重要,以下命令,在启动命令行窗口时,需要已管理员身份启动。

第一步

https://github.com/justadudewhohacks/opencv4nodejs#how-to-install

根据opencv里面的介绍需要先安装Cmake

cmake下载地址https://cmake.org/download/

cmake-3.14.0-rc4-win64-x64.msi

几乎是傻瓜式安装,在安装的时候选择自动配置环境变量就好了。不然要自己手动配置,安装完后第一步就完成了

------------------------------------------------------------------------------------------------------------------------------------华丽的分割线

第二步

使用cnpm的淘宝镜像,如果不用这个,安装说明使用npm是安装不了的,就算你翻了墙也一样,我用的公司的网,

是可以上外网的,倒腾了很久还是不行,总是会安装不成功,后面换成了cnpm就顺利一些了。

npm install -g cnpm --registry=https://registry.npm.taobao.org

------------------------------------------------------------------------------------------------------------------------------------华丽的分割线

第三步

运行以下命令

cnpm install --global windows-build-tools

会自动安装visual studio和python, python好像必须是3.0以下的。幸好之前自己装的是2.7的符合要求。

在这一步遇到了很多问题。最开始没有用cnpm这一步执行就是无法通过。

后面自己手动安装了visual studio2013,具体也不知道是因为我自己手动安装了这个软件才成功的还是

因为换成了cnpm才成功的。如果用cnpm运行还是不行的话,建议手动安装visual studio2013吧。
这里可以下载visual studio2013下载后解压,然后运行wdexpress_full.exe文件。
appium+opencv环境配置使用findElementByImage_第1张图片

在安装好以后似乎要设置一下这个,不然编译的时候会报错。就是在这里搞了很久。

你安装的visual studio是哪个版本的, msvs_version后面就写哪个版本,我开始写错了写成了msvs_version 2015

npm config -g set msvs_version 2013

然后在控制面板–>程序和功能 开启标红两项,这个不开不知道行不行。
appium+opencv环境配置使用findElementByImage_第2张图片

------------------------------------------------------------------------------------------------------------------------------------华丽的分割线

第四步

这个不知道需不需要,反正装了一下。看的资料太多了,也太乱了。

npm install -g node-gyp
------------------------------------------------------------------------------------------------------------------------------------华丽的分割线

第五步

在命令行跳转到appium的路径下面,我的appium路径是下面这个,根据个人路径来。

C:\Users\hem\AppData\Roaming\npm\node_modules\appium>

然后执行以下命令,然后就等吧,需要很长时间,差不多30多分钟吧

cnpm install --save opencv4nodejs

出现这个就是成功了,虽然我的最后面还报了几个错误,但不用理会,appium也能够使用了。
appium+opencv环境配置使用findElementByImage_第3张图片
------------------------------------------------------------------------------------------------------------------------------------华丽的分割线

使用方法

String path = System.getProperty("user.dir")+"/res/elements/image/"+value+".png";

androidDriver.findElementByImage(getReferenceImageB64(path)).click();

private static String getReferenceImageB64(String image){
String elementsFile = null;
//URL refImgUrl = getClass().getClassLoader().getResource("/123.png");
File refImgFile = new File(image);
try {
elementsFile = Base64.getEncoder().encodeToString(Files.readAllBytes(refImgFile.toPath()));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return elementsFile;
}

这样就可以根据图片去查找元素了。

如果出现以下错误,执行一下brew unlink tesseract 这个
appium+opencv环境配置使用findElementByImage_第4张图片

错误信息
这是没有在appium路径下运行,就会报错。因为这个路径下面没有package.json
appium+opencv环境配置使用findElementByImage_第5张图片
这是没有安装visual studio2013,第三步跳过就会出现这个报错
appium+opencv环境配置使用findElementByImage_第6张图片
由于安装的时候也不知道能不能搞好,很多错误信息都忘了截图了。后面有机会再弄的时候重新整理一下。。。。。

你可能感兴趣的:(appium)