利用 appium opencv 和 pyautogui 實現圖像識別 + 自動操作

 

此次踩坑過多,先做一次簡單記錄,然後再不斷完善。

問題描述:

1、先是 appium 啓動後,執行 python 代碼模塊到 session.find_element(MobileBy.IMAGE, image_test) 時,會報錯提示安裝 opencv4nodejs,此時按照提示安裝後,仍舊報錯;

2、後續,卸載python,重新安裝 node-v16.20.2-x64.msi 等軟件後,執行python代碼模塊,提示 Locator Strategy '-image' in appium,根據提示,爲 appium 安裝 images 插件,啓動 appium --use-plugins images,仍舊報錯提示 sharp 錯誤信息,至此,查找不到資料,暫時先記錄到這裏。

環境:

  • Windows 10
  • 雷電模擬器 9.0.22
  • PyCharm 2022.1.3
  • Anaconda 3 23.7.4、安裝 python 3.8 和 python 3.11,但是不設置環境變量,該環境直接應用到 PyCharm 的 Python 項目中;
  • Python 3.12.2、pip 24,該環境是安裝 node-v16.20.2-x64.msi 時,通過勾選 Tools for Native Modules,自動安裝並設置,屬於全局環境變量;
  • Node.js v18.19.1、npm 8.19.3,已安裝了 node-v16.20.2-x64.msi 後,appium install plugins images 提示 node 版本過低,直接下載 18.19.1 的壓縮包,手動配置到系統環境變量中;
  • Cmake 3.26.6
  • OpenCV 4.6.0
  • Git 2.40.0

一、Cmake

    倉庫地址:https://github.com/Kitware/CMake/releases

    下載 v3.26.6 版本,msi 服務安裝模式,自動配置環境變量;

    輸入以下代碼驗證版本;

cmake --version

二、Git

    倉庫地址:https://git-scm.com/

    下載並安裝,後續如果通過命令行下載 opencv 會用到,但是 github 訪問速度不穩定,後續的 opencv 建議直接去官網下載,不要去 github 倉庫;

    輸入以下代碼驗證版本;

git --version

三、OpenCV

    下載地址:https://nchc.dl.sourceforge.net/project/opencvlibrary/4.6.0/opencv-4.6.0-vc14_vc15.exe

    安裝並配置環境變量;

  • OPENCV_INCLUDE_DIR     D:\DevSoft\OpenCV\opencv-4.6.0\build\include
  • OPENCV_LIB_DIR     D:\DevSoft\OpenCV\opencv-4.6.0\build\x64\vc15\lib
  • OPENCV_BIN_DIR     D:\DevSoft\OpenCV\opencv-4.6.0\build\x64\vc15\bin
  • OPENCV4NODEJS_AUTOBUILD_OPENCV_VERSION     4.6.0
  • OPENCV4NODEJS_DISABLE_AUTOBUILD     1

四、Node

噩夢之源,從這一步開始,可以說是不斷的失敗,在後續的 windows-build-tools 和 opencv4nodejs 的安裝中,不斷踩坑。

先後嘗試了多個版本,node-v14.13.1-x64、node-v16.20.2-x64、node-v18.19.1-x64,每個版本的坑都不一樣。

    倉庫地址:https://nodejs.org/dist/

    選擇並下載 node-v16.20.2-x64.msi 版本,並進行安裝,勾選 Tools for Native Modules ,進入安裝;

    安裝完成後,會啓動安裝相應的工具,這裏面就包括 chocolatey、Python、Visual Studio Build Tools 等工具和模塊,我也不想安裝這些,但是網上的攻略我都試過了,比如只安裝vc工具包,但是在後續的 windows-build-tools 模塊的安裝中必報錯!我已經無語了。。

    安裝完成後,檢驗當前的環境信息,這裏我的 node 版本已經是18.19.1,正如上面所言,我重新下載了一個 node-v18.19.1-win-x64.zip 壓縮包,並進行了 node 的環境變量重新配置;

五、Windows-build-tools

    倉庫地址:https://github.com/felixrieseberg/windows-build-tools

    文檔說明:https://devblogs.microsoft.com/cppblog/introducing-the-visual-studio-build-tools/

    通過以下命令,安裝 windows-build-tools,不出意外,應該是會成功的,否則就是出意外了。(我就是在說廢話,出意外,你的 vc 環境有問題,看看你是不是裝的 python 是不是 msi 的版本,不是的話,重新裝過!記得一定要勾選 Tools for Native Modules )

npm install --global windows-build-tools

    踩坑記錄之報錯了,手動安裝 vs_BuildTools.exe,這個方法對我來說是沒用的。

    因爲 npm install --global windows-build-tools 報錯,嘗試手動安裝工具後,仍舊報錯,烏魚子。。

六、Appium Server

    通過以下命令,安裝 Appium Server;

npm install --global appium

七、Opencv4nodejs

    進入到 appium server 包下(D:\DevSoft\Nodejs\node_global\node_modules\appium),執行 npm 安裝命令;

npm install --save opencv4nodejs

八、檢查與測試

8.1 確認 Appium Server 狀態

    通過以下命令,安裝 Appium-Doctor,可以檢查 Appium Server 的配置情況,並給出提示;

npm install --global appium-doctor

    輸入命令,開始檢查;

appium-doctor

    如果提示缺少 apkanalyzer.bat,進入 https://developer.android.google.cn/studio?hl=zh-cn ,下載-僅限命令行工具(zip),複製 bin 和 lib 到 D:\DevSoft\Android\android-sdk\tools 下,並將 apkanalyzer.bat 也同步複製到 D:\DevSoft\Android\android-sdk\platform-tools 下,重新執行 appium-doctor 進行檢查;

8.2 Appium Server 驅動

    輸入命令,檢查驅動情況;

驅動列表:appium driver list
更新Appium:npm i --location=global appium
安裝驅動:appium driver install uiautomator2

    如果出現報錯,無法安裝,則設置環境變量;

APPIUM_SKIP_CHROMEDRIVER_INSTALL=1

8.3 Appium Server 插件

    輸入命令,檢查插件情況;

插件列表:appium plugin list
插件安裝:appium plugin install images

8.4 Appium Inspector 配置

 

8.5 Python 代碼配置

    desired_cap = {
        'platformName': 'android',
        'platformVersion': '9',
        'deviceName': 'emulator-5554',
        # 'appPackage': 'gov.pianzong.androidnga',
        # 'appActivity': '.activity.LoadingActivity',
        'appPackage': 'com.bftzn.ld',
        'appActivity': 'com.sjjh.view.JuHeSplashActivity',
        'noReset': 'true',
        'newCommandTimeout': '300',
        'chromedriverExecutable': r'D:\Workplace\AutoTestProject\drivers\chromedriver_860424022.exe',
        'automationName': 'UiAutomator2'
    }

    session = webdriver.Remote('http://127.0.0.1:4723', desired_cap)

8.6 關於 appium --use-plugins images 報錯

    提示內容如下,因爲解決過程嘗試了多次,無法複製原錯誤代碼,大概如下:

Possible solutions:
- Ensure optional dependencies can be installed:
  npm install --include=optional sharp
  yarn add sharp --ignore-engines
- Ensure your package manager supports multi-platform installation:
  See https://sharp.pixelplumbing.com/install#cross-platform
- Add platform-specific dependencies:
  npm install --os=x32 --cpu=x64 sharp
  npm install --force @img/sharp-linuxmusl-x64
- Consult the installation documentation:
  See https://sharp.pixelplumbing.com/install

    這個是在加載 Appium Server Plugins 的插件錯誤,如果出現這個問題,請開始瞎貓碰見死耗子。。

  • 第一步,進入 appium 項目下,執行卸載 opencv4nodejs 包的操作,npm uninstall opencv4nodejs,然後重新安裝 npm install --save opencv4nodejs;(原本我以爲是因爲我安裝的是 OpenCV 4.6.0 版本,然後 opencv4nodejs 包版本爲 5.6.0 ,是不匹配的問題,結果好像不是。因爲我嘗試降級 npm install [email protected],會瘋狂報錯,故而中止。)
  • 第二步,之前使用過 npm install --include=optional sharp 和 npm install --os=x32 --cpu=x64 sharp 命令,安裝了這個 sharp 包,我查了一下資料,記得用 bing 查,以爲是版本問題,目前默認安裝 0.33.2 版本(根據錯誤提示到 C:\Users\Administrator\.appium\node_modules\@appium\images-plugin 下的 package.json,是可以看到已經配置的是 0.33.2,但是不知道爲什麼,版本一致仍舊報錯),有人反饋需要降級到 0.32.6,然後我執行 npm uninstall sharp ,接着重新安裝 npm install [email protected],結果依然不行。。最後死馬當活馬醫,卸載掉 [email protected],重新安裝 npm install --os=x32 --cpu=x64 sharp 命令,居然奇蹟般的成功了。。
  • 我真是服了。。到底什麼原因。回頭再說吧。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章