You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 04:54:09