在新版本的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;
}
這樣就可以根據圖片去查找元素了。
錯誤信息
這是沒有在appium路徑下運行,就會報錯。因爲這個路徑下面沒有package.json
這是沒有安裝visual studio2013,第三步跳過就會出現這個報錯
由於安裝的時候也不知道能不能搞好,很多錯誤信息都忘了截圖了。後面有機會再弄的時候重新整理一下。。。。。