前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Appium自动化执行填的大坑分享

Appium自动化执行填的大坑分享

作者头像
厦门-安仔
发布2021-01-05 23:53:01
9210
发布2021-01-05 23:53:01
举报

自从泰斯特Club测试技术沙龙举办讲了UI自动化以后,就有很多人在问appium执行过程中断了要怎么处理?很多人都遇到这个问题,不知如何解决~对于这个问题解决方法,我是踩坑过来的,这个也是比较大的坑。待我一一说来。

首先先简单了解下appium的原理,appium是一个c/s结构,我简单的形象的说,appium 执行分为电脑跟手机。电脑端也是一个c/s架构,C就是自动化脚本,S就是appium 服务,自动化脚本通过webdriver协议请求端口4723请求到appium服务端,appium服务端接收请求后,返回一个待sessionid会话,后续的操作都是通过这个sessonid进行操作,这是电脑端操作,电脑跟手机的交互是通过socket协议4724端口进行交互,这是appium sever就充当客户端,而手机端就是bootstrap.jar进行操作,而boostrap.jar在下发命令给uiautomator进行操作,整体流程就是这样;

既然知道了是C/S架构,所以每次在调试的时候,记得打印下整体的请求,然后要注意查看S端返回的结果,那我们说下appium执行中断服务端的提示是Could not proxy command to remote server. Original error: Error: socket hang up;主要的原因是新版的appium的ui2server请求过于频繁,耗电量过高被软件或者系统认为是流氓软件直接kill掉。这个问题如果是使用appium1.13.x是不存在这个问题,如果是1.18.x以上就存在这个问题,当然这是我自己使用发现的,尽管1.19版本ui2server 为前端服务也存在这个问题。

解决方案如下:

1.appium setting,uiautomator2sever两个服务都给全部权限;

2.在设置的电量管理,把省电管理关掉,以及给ui2两个sever 不受耗电管理,具体你根据机型进行选择;

3.当前面两个都还无法解决的时候,一般是手机管理软件问题,你可以运行脚本,并且在dos下,运行adb logcat -v time > 电脑目录文件,然后当出现的时候,停止脚本,进入adb logcat 日志目录里面根据关键字io.appium.uiautomator2.server 进行查找,然后会找到force ui2ser 是哪个pid kill掉,

这时在通过adb shell ps |grep pid 找出那个包名,在通过命令adb shell pm uninstall -k --user 0 +包名 卸载这个软件,这个一般都是手机管家之类的,记得务必用这个命令。vivo设备:com.vivo.abe,联想设备:com.zui.safecenter,只要能搜索到直接卸载;

4.前面三个方法都是进行手机软件的管理删除,接下来就是自动化框架的修改,你可以检查session ,当出现中断,根据服务端返回内容判断,session断开了,然后检查是否还有session,如果没有,重新启动appium,建立一个session。

以上四个方法是完美解决这个大坑的秘籍,请遇到的同学以及问我的同学自取。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试一般不一般 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档