ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Midscene 在 Android 设备输入英文被输入法改写怎么排查?

Midscene 在 Android 设备输入英文被输入法改写怎么排查? Midscene 在 Android 设备输入英文被输入法改写怎么排查【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midscene用 Midscene 的midscene/android驱动 Android 真机或模拟器时有一类输入问题比较隐蔽脚本里让 Agent 输入一段英文运行报告里记录的输入参数是正确的但应用里实际收到的文本却对不上——变成了别的词、缺了一部分甚至出现中文/拼音候选。这类英文被输入法改写的问题根源通常在设备的当前输入法而 Midscene 提供了imeStrategy选项可以绕开它。本文说明如何确认这是输入法改写问题、如何把文本输入切换到 yadb 通道以及修完后怎么核对结果。先确认现象是不是输入法改写官方文档Android 平台文档 的 FAQ 一节给出的判定方式很直接运行报告里显示的输入参数是正确的但应用实际收到了不同的文本、文本缺失或者出现了中文/拼音候选。满足这个组合才属于输入法改写问题。文档解释了原因默认情况下纯 ASCII 文本走的是原生的adb input text通道。如果设备上激活的是中文键盘或带自动纠错的键盘这段纯 ASCII 文本经过当前输入方法处理时可能被改写。也就是说被改写的不是你脚本传的参数而是文本落到设备上时被设备侧的输入法动了手脚。这里要做一个容易混淆的区分文档明确把它当成了另一个问题输入正确、之后文本消失或被清空—— 不是输入法改写而是输入后自动收起键盘的默认行为默认发送 ESC 键事件触发输入框的副作用应去查keyboardDismissStrategy或autoDismissKeyboard而不是imeStrategy参数正确、落机文本被改写—— 才是本文处理的问题。理解默认输入策略为什么纯英文会走到adb input textAndroidDevice构造选项imeStrategy控制何时调用 yadb 进行文本输入可选值为always-yadb或yadb-for-non-ascii默认是yadb-for-non-ascii见 API 参考的 AndroidDevice 一节yadb-for-non-ascii带重音的拉丁字符如 ö、é、ñ、中日文、%s/%d这类格式占位符走 yadb纯 ASCII 文本走更快的原生adb input text——问题就出在这条通道上always-yadb所有文本输入都走 yadb兼容性最好对纯 ASCII 文本会稍慢一些。修复把 imeStrategy 设为 always-yadb有三种等价方式按你的使用方式任选其一即可。JavaScript SDK在构造AndroidDevice时传入选项const device new AndroidDevice(device-id, { imeStrategy: always-yadb, });YAML 脚本YAML 的android段支持AndroidDevice构造器支持的全部选项见 YAML 脚本文档在其中加上android: imeStrategy: always-yadb环境变量不改代码时在运行环境里设置export MIDSCENE_ANDROID_IME_STRATEGYalways-yadb设置后包括纯英文在内的所有文本输入都会强制走 yadb 通道不再经过设备的adb input text原路中文键盘或纠错键盘的改写也就不会发生了。验证结果按修复前的方式重新执行包含该输入步骤的脚本然后核对两点脚本结束后控制台会输出Midscene - report file updated: /path/to/report/some_id.html打开这份 HTML 报告确认 Input 动作记录的输入参数与你脚本中的要求一致检查设备上应用里实际落地的文本应与报告中的输入参数一致不再出现被替换的单词、缺字或中文/拼音候选。如果核对后发现是文本输进去了又消失了说明你遇到的是另一个 FAQ 问题按文档给出的优先级依次尝试把keyboardDismissStrategy设为back-first改用 BACK 键收起键盘如果输入框对 BACK 键也有副作用再把autoDismissKeyboard设为false关闭自动收起。限制yadb 无法定位非默认显示器。如果你在构造AndroidDevice时设置了非 0 的displayId且输入内容需要走 yadbalways-yadb或含需 yadb 的字符Midscene 会直接抛出错误而不是静默降级错误信息提示使用displayId0或改用其他imeStrategy见 device.ts 中typeText的实现。always-yadb对所有文本生效纯 ASCII 输入会比原生adb input text稍慢这是文档标注的兼容性取舍只在该设备/输入场景出现改写问题时启用即可。本方案针对英文被当前输入法改写这一现象。如果启用always-yadb后落机文本仍不一致说明问题不在输入通道需要重新核对应用侧行为例如输入框自身的监听逻辑文档中没有覆盖此类后续排查。【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midscene创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表