Appium 安卓自动化:遇到几个费肝的问题

前言

来啦老铁!

近期在搭建安卓自动化环境、试运行脚本等时候,遇到一些技术问题,过程中也花了不少时间研究,特此记录,希望对大家有帮助~

问题列表

  1. 启动安卓模拟器遇到报错;
  2. 开始执行脚本时遇到报错;
  3. 通过自动化点击某些具有重定向功能的按钮后,无法重定向;

1. 启动安卓模拟器遇到报错;

  • 启动安卓模拟器时遇到报错如下:
报错

这个是说系统环境变量里头没有找到 ANDROID_SDK_ROOT 这个环境变量,需要从环境变量方面入手;

  • 解决办法:

a. 修改 ANDROID_HOME 环境变量为:~/Library/Android/sdk;
b. 增加环境变量 ANDROID_SDK_ROOT,其值为 ~/.android/avd;
c. 修改如下:

解决方式

注意: 记得保存 ~/.bash_profile 和 source ~/.bash_profile;

2. 开始执行脚本时遇到报错;

  • 开始执行脚本时遇到报错如下:
报错

然后模拟器内浏览器的表现是打开浏览器,马上又关闭,第一时间我想到的是 chromedriver 跟模拟器中 Chrome 浏览器的版本不匹配,然而用了命令:appium --allow-insecure chromedriver_autodownload 去启动 appium server,已经让 appium 自动下载了,也没办法解决,后来网上找了下资料,最终解决;

  • 解决办法:

a. 参考文献:https://github.com/webdriverio/webdriverio/issues/6881;
b. 主要就是要升级 nodejs,升级前是 v14.x.x,升级到 v16.x.x 就顺利解决了问题;

这样的报错,没有任何有关 nodejs 版本方面不匹配的信息,还是比较隐晦的,需要特别记录一下~

3. 通过自动化点击某些具有重定向功能的按钮后,无法重定向;

  • 现象:

a. 在执行手机端浏览器自动化脚本的过程中发现,安卓 + Chrome 浏览器,在点击了某些有自动跳转功能的按钮后,页面未能自动跳转,而出现这个问题的时候,手工介入,点击页面任何其他地方时,能恢复重定向;

b. 手工执行很正常,可以自动跳转;

c. 安卓真机上也是同样的问题;

d. iOS 上正常,可以自动跳转;

综合这几个现象,感觉十分诡异,也研究了很久,最终找到了解决办法;

  • 解决办法:

在点击这样的按钮时,需要使用 js 注入的方式,如:

await retry(() => this.$.then(el => this._driver.execute(el => el.click(), el)));

而不是原来的:

await retry(() => this.$.then(el => el.click(opts)));

目前遇到这几个花费比较多时间研究的,后续有遇到其他问题,再作记录。如果你有遇到 appium 相关的问题,不管解决与否,都欢迎到评论区一起讨论讨论~

能力有限,欢迎指正、互相交流,感谢~

如果本文对您有帮助,麻烦点赞、关注!

感谢~

你可能感兴趣的:(Appium 安卓自动化:遇到几个费肝的问题)