在新版本的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文件。
在安装好以后似乎要设置一下这个,不然编译的时候会报错。就是在这里搞了很久。
你安装的visual studio是哪个版本的, msvs_version后面就写哪个版本,我开始写错了写成了msvs_version 2015
npm config -g set msvs_version 2013
然后在控制面板–>程序和功能 开启标红两项,这个不开不知道行不行。
------------------------------------------------------------------------------------------------------------------------------------华丽的分割线
第四步
这个不知道需不需要,反正装了一下。看的资料太多了,也太乱了。
npm install -g node-gyp
------------------------------------------------------------------------------------------------------------------------------------华丽的分割线
第五步
在命令行跳转到appium的路径下面,我的appium路径是下面这个,根据个人路径来。
C:\Users\hem\AppData\Roaming\npm\node_modules\appium>
然后执行以下命令,然后就等吧,需要很长时间,差不多30多分钟吧
cnpm install --save opencv4nodejs
出现这个就是成功了,虽然我的最后面还报了几个错误,但不用理会,appium也能够使用了。
------------------------------------------------------------------------------------------------------------------------------------华丽的分割线
使用方法
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路径下运行,就会报错。因为这个路径下面没有package.json
这是没有安装visual studio2013,第三步跳过就会出现这个报错
由于安装的时候也不知道能不能搞好,很多错误信息都忘了截图了。后面有机会再弄的时候重新整理一下。。。。。