Android客户端(4)-uiautomator自动化测试

48 阅读1分钟

痛点

1、延时获取避免获取组件失败

比如上面一个EditText,下面一个置灰的按钮,如果获取到了EditText后立即获取按钮并执行click,很有可能什么反应也没有。

因为此时按钮还没有触发响应状态,所以延时1S执行可以避免这个问题。

2、无法获取输入框的场景如何通知老板进度

如果想要执行自动化测试过程中通知老板,我执行到了某一步了,最理想的状态当然是获取EditText的UIObject,然后setText,点击一个发送,这样我们可以自定义想要发送的文本。

但是如果获取不到EditText这个过程是否就不能走通了?

今天想到了一个变通的方案,即通过click固定坐标,比如点击输入框所在的坐标,然后输入法是不是就出来了,点击输入法的数字,输入法会变成数字1-9,此时数字的坐标也是固定的。这样通过点击不同的数字组合来代表我们想要传递的信息,通过输入法来输入给EditText,然后发送。也达到了我们想要的目的。

PS

目前还是发现uiautomator要实现完整的自动化任务还是有很多难点需要解决,可能需要深入源码去分析才能有进展。

比如,UIObject获取不到的有时候通过UiObject2能够获取到,但是本次能获取到并不代表下一次也能获取到,试了微信有一次的确获取到了EditText,但是下一次执行自动化任务却再也获取不到了。