C# Selenium Chrome SendKeys无法输入^°`´字符问题求助
解决方案
方法1:通过JavaScript注入直接设置输入值
绕过SendKeys的键盘布局依赖,直接用JS修改输入框内容,确保字符正确写入:
// 假设inputElement是目标输入框元素 IJavaScriptExecutor js = (IJavaScriptExecutor)driver; // 方式A:直接设置输入框value属性 js.ExecuteScript("arguments[0].value = arguments[1];", inputElement, "^°`´"); // 方式B:模拟真实输入事件(适配仅监听输入事件的页面) js.ExecuteScript(@" const input = arguments[0]; const text = arguments[1]; input.focus(); input.value = ''; for (let char of text) { const event = new InputEvent('input', { data: char }); input.dispatchEvent(event); } ", inputElement, "^°`´");
方法2:模拟德语键盘的组合按键
针对德语键盘上目标字符的输入逻辑,用Actions类模拟AltGr(即Ctrl+Alt组合)+对应按键的操作:
Actions actions = new Actions(driver); inputElement.Click(); // 先聚焦输入框 // 输入^:德语键盘AltGr+6 actions.KeyDown(Keys.Control).KeyDown(Keys.Alt).SendKeys("6").KeyUp(Keys.Alt).KeyUp(Keys.Control).Perform(); // 输入°:德语键盘AltGr+Shift+0 actions.KeyDown(Keys.Control).KeyDown(Keys.Alt).KeyDown(Keys.Shift).SendKeys("0").KeyUp(Keys.Shift).KeyUp(Keys.Alt).KeyUp(Keys.Control).Perform(); // 输入`:德语键盘AltGr+7 actions.KeyDown(Keys.Control).KeyDown(Keys.Alt).SendKeys("7").KeyUp(Keys.Alt).KeyUp(Keys.Control).Perform(); // 输入´:德语键盘AltGr+8 actions.KeyDown(Keys.Control).KeyDown(Keys.Alt).SendKeys("8").KeyUp(Keys.Alt).KeyUp(Keys.Control).Perform();
方法3:强制ChromeDriver使用英文键盘布局(备选)
若业务允许临时切换键盘布局,启动Chrome时添加参数强制使用美式键盘:
ChromeOptions options = new ChromeOptions(); options.AddArgument("--keyboard-layout=us"); options.AddArgument("--lang=en-US"); IWebDriver driver = new ChromeDriver(options);
内容的提问来源于stack exchange,提问作者Nico Hollmann
相关产品推荐
相关产品推荐

