Appium app 获取地理位置、应用列表、安装应用权限的提示框,当无规律出现时,怎样实现一系列监听处理 Appium+Java+Junit

Lyndon · February 21, 2017 · Last by Lyndon replied at February 22, 2017 · 1646 hits

在 Android6.0 测试基于 H5 的 Hybrid App,登录时受网络不稳定原因,app 获取地理位置的权限提示框有时 3s 至 7s 后才出现,这种无规律现象导致 Appium 脚本超时点不到 [允许] 按钮;用华为手机还会出现 2 个连续弹框(获取地理位置、获取应用列表),我之前的办法:
1、(有规律情况)for 循环。开始使用 for 循环 2 次,每次等待 3 秒,(有规律情况)可以正常点击。
2、(有规律情况)多线程。在安装 app 时(driver.installApp(str)),必须先点击 10s 的安装权限弹框 [允许],否则脚本不会继续向下执行 findElement(for 循环不可取超过 10s 自动拒绝安装)。我用多线程封装了下,把 1、2 问题解决了。

3、(无规律情况)Java 事件监听机制。综上两种情况,当遇到弹框无规律出现情况或者 app 用 Appium 安装启动时,仍有提示处理不了的情况。而且不同手机提示信息和弹框不一样。怎样处理更及时、有效、稳定?

我看到有人用监听应该是个更好的办法,是否处理更及时、有效、稳定?想讨论下具体实现看下大家是怎么处理的,我 Java 初学,用 Junit4 怎么实现监听,如果使用监听,是否用的是基于 Java 事件监听机制,还是其他的?

共收到 7 条回复 时间 点赞
1Floor has deleted

#2 楼 @dadeshuo 恩这个我看下,还有其他的吗,我的主要意思是怎样使用监听来封装各种弹框提示——用监听来操作弹框

我没有用过 java client, 但是应该有寻找 element timeout 等待时间的设置,查查看 java client 的文档看看有没有关于 implicit wait 的设置,参考
https://discuss.appium.io/t/how-to-control-time-in-appium-when-find-element/5500/3

尝试使用 AccessibilityService 解决应用安装提示
https://testerhome.com/topics/3800

Macacajs 中,app 不用每次安装,甚至可以保留登录信息,希望 appium 也能这样

第三种(无规律情况)找到了,是我所理解的:当方法 2 多线程一但遇到版本更新、闹铃、来电、卡延迟情况就不起作用了

uiautomator 的 UiWatcher 监听器 http://www.cnblogs.com/WXBai/p/6030276.html
1、Uiwatcher 用于处理脚本执行过程中遇到非预想的步骤
2、UiWatcher 使用场景
  1)测试过程中来了一个电话
  2)测试过程中来了一条短信
  3)测试过程中闹钟响了
  4)出现各种非预想的步骤

【其他参考】
uiautomator 的 UiWatcher 介绍 http://blog.chengyunfeng.com/?p=505
uiautomator 实现接电话的 case http://blog.csdn.net/itfootball/article/details/42464875

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up