Appium 关于 Appium 效率如何提升,大家都采用什么办法。

vball · 2017年12月01日 · 最后由 回复于 2017年12月06日 · 2910 次阅读

UI 自动化通过 python 和 appium 来完成 android 和 iOS 的覆盖。业务场景基本完成。
但是运行效率却不尽人意。平均一个场景需要 3-5 分钟。定位有些使用 id,有些使用 xpath。

目前已知问题:
1、定位有时很慢。发现在界面刷新很快时,会导致定位非常耗时。(由于 app 有一部分界面是实时刷新的)
2、输入文本也慢。android 改为 adb shell 直接输入,稍微好点。
3、启动应用时慢,全部场景改为 no-reset 之后,稍稍好点。

总的来说,效率并不高。目前的判断是实时刷新的界面影响很大。

已经用 appium 达到比较好的 UI 自动化效果的同学,具体有哪些提高效率的做法呢。

共收到 13 条回复 时间 点赞

同问,帮顶。

之前看过一个文章说该用 java

不要用 xpath,现在的版本用 xpath 非常慢

同问,自动执行速度太慢该如何解决

多设备并行测试,然后整合测试结果到一个文档里面

不可能很快的,appium 都是通过 http 来实现 webdriver 协议,那你每一次调用 api 都是一次 http 请求,如果想稳定性以及效率高点,uiautomator 会比较好,前提是如果能满足你的需求。

定位有时很慢。发现在界面刷新很快时,会导致定位非常耗时。(由于 app 有一部分界面是实时刷新的)

自己封装个宽松的 find 方法解决容错问题。至于定位和 getPageSource 慢这个的确是 appium 底层引擎设计的问题,可以尝试下用他们的 android 和 ios 的平台特有定位方式。

输入文本也慢。android 改为 adb shell 直接输入,稍微好点。

这个慢还可以接受吧。毕竟输入量并不大

启动应用时慢,全部场景改为 no-reset 之后,稍稍好点。

设置 fullReset=false noReset=true 还有一个 dontStopOnReset=true,当然还得修改下不让他们重新安装无聊的 settings.apk 和 unlock.apk

当然 UI 整体就是慢的,求稳定不要求快。求快需要从分布式上着手。
appium 本身慢并不是慢在中间的 nodejs,而是底层的 uiautomator uiautomator2 等几个 server 上,那个需要社区参与改进下。
抛砖引玉,听听更多同学的技巧。

李雷雷 回复

有考虑过直接用底层的框架。但是维护的人力成本就上来了。毕竟 android 和 iOS 的底层还是差别比较大。有点尴尬。

少陵生 回复

嗯,这也是一种办法。

vball #10 · 2017年12月02日 Author

启动的部分确实有必要改下。

在 Appium 基础之上提效?一方面 是你用例设计的合理程度优化 二是你使用的是第三方工具提效的话还是工具本身吧。
我这边现在 升级 Appium desk Android 7.0 手机跑起来效率提升一倍左右(但启动特别慢)
抛开 Appium 现在实现了一套在手机上自动化 Agent 通过接收云端指令 类似手淘的 Sword 框架 效率比 Appium 提升 2 倍左右。

  • 并没有感觉多慢,主要还是看框架设计,我现在 42 个用例,12 分钟不到就能执行完毕
  • 用例太多的话,可以多机执行

这么快,你每条 case 应该没有复杂的业务逻辑吧?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册