selenium在自动化测试记事本(notepad)时,`sendkeys(“iii”)` 显示为“ııı”,根本原因是系统区域设置(locale)导致小写字母“i”被渲染为带点的土耳其语/阿塞拜疆语变体“ı”,需显式设置jvm默认locale为英语环境。
该问题并非Selenium驱动或元素定位错误,而是底层Windows文本输入行为受Java运行时Locale影响。当JVM默认Locale为tr-TR(土耳其语)、az-AZ(阿塞拜疆语)等特定语言环境时,Java的文本处理逻辑(尤其涉及Character.toLowerCase()等底层调用)可能间接影响AWT/Swing组件(如Notepad的Edit控件)对键盘事件的解析——尽管Notepad本身是原生Win32应用,但Selenium通过Windows UI Automation或SendInput模拟按键时,若Java进程的Locale未标准化,部分输入法上下文或系统API调用可能误判字符映射,最终导致拉丁字母“i”被替换为无点形式“ı”。
✅ 解决方案:在测试初始化阶段强制设置JVM默认Locale