前言
来啦老铁!
近期在搭建安卓自动化环境、试运行脚本等时候,遇到一些技术问题,过程中也花了不少时间研究,特此记录,希望对大家有帮助~
问题列表
- 启动安卓模拟器遇到报错;
- 开始执行脚本时遇到报错;
- 通过自动化点击某些具有重定向功能的按钮后,无法重定向;
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 相关的问题,不管解决与否,都欢迎到评论区一起讨论讨论~
能力有限,欢迎指正、互相交流,感谢~
如果本文对您有帮助,麻烦点赞、关注!
感谢~
网友评论