adb向Android TV Box发文本时数字被识别为换台的问题咨询
Android TV Box自动化测试数字输入触发换台问题规避方案
问题背景
- 测试场景为Android TV Box端VOD资源自动化播放触发,常规文本输入采用
adb shell input text <string>命令实现,普通文本输入无异常 - 异常表现:输入包含数字的内容时,设备会将数字识别为全局换台指令,每次发送数字都会直接退出搜索界面
- 产品侧确认结论:系统层面无法关闭「文本形式发送的整数识别为换台操作」的逻辑,该原生交互无修改空间,对应问题已做关闭处理
可落地规避方案
- 逐键发送数字键值事件
放弃整串文本传参的输入方式,改用adb shell input keyevent命令逐位发送数字对应的遥控器键值,数字0-9对应的键值为7(对应数字0)到16(对应数字9),模拟真实遥控器按数字的操作路径,输入事件会直接分发给当前获焦的搜索框,不会触发全局换台快捷键响应。
示例:输入数字123的执行命令如下adb shell input keyevent 8 # 输入数字1 adb shell input keyevent 9 # 输入数字2 adb shell input keyevent 10 # 输入数字3 - 直接调用控件方法赋值
配合uiautomator等自动化框架,先定位到搜索页的文本输入控件,确认控件获焦后直接调用控件的setText()方法传入目标字符串,完全跳过系统全局按键事件的分发流程,从根源上避免触发换台逻辑。 - 转义破坏纯数字识别规则
如果必须使用input text命令传参,可在每段数字前后拼接不可见的空白转义字符,让系统无法识别到纯整数串,输入完成后再通过控件操作移除多余的空白字符即可。
注:因系统原生逻辑限制不存在彻底修复方案,上述方案均为测试场景下的绕行实现,可根据自身自动化框架的技术选型选择适配成本最低的方案。
内容的提问来源于stack exchange,提问作者Majd Freigi
相关产品推荐
相关产品推荐

