利用 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 命令,居然奇迹般的成功了。。
  • 我真是服了。。到底什么原因。回头再说吧。

 

 

 

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