UiAutomator Uiautomator 2.0 有时会出现输入框文案输入不了的情况~

木月 · 2016年01月20日 · 最后由 木月 回复于 2016年01月29日 · 2794 次阅读

问题描述

今天在做 uiautomator 2.0 的自动化的时候,有一条 case 很诡异,在输入字符的时候(我输入的是英文),都走通了,但实际没有输入,经过一番 DEBUG,最后定位到 Android SDK mKeyCharacterMap.getEvents(char[] chars) ,看结果应该属于该方法的异常处理情况:null if the given char array can not be generated using the current key character map.导致直接跳过了字符输入操作,sendText() 直接返回了 true,有大神能解释下这是为什么吗?不应该是设置字符串的问题,因为在其他的页面输入相同字符是 OK 的,同样的,我也对比了输入框的属性,也都是一样的,请指教~

最新进展

在看了 Uiautomator 2.0 源码之后,发现针对 5.0 之前版本和之后版本是区分处理的,在 5.0 之后的版本都是 OK 的,应该是 5.0 之前 sdk 的一个 bug 吧或者是 Uiautomator 在处理 5.0 之前版本的输入操作上,没有考虑周全~

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 10 条回复 时间 点赞

你输入了啥字符

@carl 就普通的 hello word~

#2 楼 @350705144 我用的是安卓 6.0 的机器,没有这个问题

#2 楼 @350705144 之前使用 UI1.0 在安卓 4.4 的机器上也没这问题啊

#2 楼 @350705144 有汉字或者特殊字符吗. 你试过 123 这种简单的字符串吗

不是所有的页面输入都有这个问题,我在我们产品 App 只一个输入页面发现了这个问题~

可能和 EditorInfo.TYPE 有关。不过可以改写 AndroidIM,使用该输入法完成文字的输入。

你好,请问你有定义过自己的 runner 么?我希望在测试中加一些自己的东西,使用原来的 runner(AndroidJUnitRunner)不能满足一些需求。但是我通过继承 AndroidJUnitRunner 后编写自己定义的 runner,执行测试时总是找不到。ps:我在 build.gradle 中更新 testInstrumentationRunner 为自定义 runner

@apple1987 这个没有试过,但 GG 推 2.0 极力使用 AndroidJunit,怕是很多地方引用了相关的东西吧,我也不是很清楚啊,这个设计到规则改变了,还没能力做一些尝试~

木月 #10 · 2016年01月29日 Author

@marker 我只是输入英文和数字,因为我们对中文要求不高,也没有做过多的这方面的探索

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