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

 

    

    自从泰斯特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。

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试一路到黑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值