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

Windows下Selenium以服务运行时无法输入@等特殊字符问题

解决方案:Session 0环境下Selenium无法输入特殊字符

方案1:修改任务计划的会话模式(适合允许用户登录的场景)

  • 打开任务计划程序,找到启动Selenium Server的任务
  • 右键选择「属性」→「常规」标签页
  • 在「安全选项」中,取消勾选「不管用户是否登录都要运行」,改为选择「只有在用户登录时才运行」
  • 同时勾选「使用最高权限运行」,若需开机自动启动,切换到「触发器」标签页,添加「登录时」的触发器

此方法让Selenium运行在用户会话而非Session 0,加载完整的用户键盘布局配置,解决按键模拟异常问题。

方案2:用JavaScript直接设置输入值(推荐无人值守场景)

绕过SendKeys的系统按键模拟,直接通过JavaScript操作DOM设置输入框值,不受Session 0环境限制:

[TestMethod]
public void LocalInputTest()
{
    ChromeOptions chromeOptions = new ChromeOptions();
    chromeOptions.AddArgument("--window-size=1920,1080");
    chromeOptions.AddArgument("--headless");
    var webDriver = new RemoteWebDriver(new Uri("http://localhost:4444/"), chromeOptions);
    webDriver.Navigate().GoToUrl("file:///C:/git/selenium-test/index.html");

    var inputText = "@éáőöüú<#&@{}>asd@";

    var element = webDriver.FindElement(By.XPath($"//*[@data-e2e-testing = 'problematic.input']"));
    
    // 用JS设置输入值,替代SendKeys
    IJavaScriptExecutor js = (IJavaScriptExecutor)webDriver;
    js.ExecuteScript("arguments[0].value = arguments[1];", element, inputText);
    // 触发input事件,确保页面校验逻辑捕获值变化
    js.ExecuteScript("arguments[0].dispatchEvent(new Event('input'));", element);

    var screenshot1 = (webDriver as ITakesScreenshot).GetScreenshot();
    screenshot1.SaveAsFile("C:/git/selenium-test/screenshot.png");

    var text = webDriver.FindElement(By.XPath($"//*[@data-e2e-testing = 'problematic.input']")).GetAttribute("value");
    Assert.AreEqual(inputText, text);
}

方案3:为Chrome指定用户配置文件

创建包含正确键盘布局的Chrome用户配置文件,在启动参数中指定:

chromeOptions.AddArgument(@"--user-data-dir=C:\path\to\your\chrome-profile");

可先在普通cmd会话中启动Chrome,配置好键盘布局后,将用户目录复制到指定路径,确保Session 0环境加载该配置。


问题原因分析

Windows的Session 0隔离环境不加载用户个性化键盘布局和输入服务配置,SendKeys依赖系统级按键模拟,@、#、&等特殊字符需要特定键盘组合(如Shift+2输入@),但Session 0无法正确解析这些组合;而带重音的字符通过Unicode编码直接输入,不依赖键盘布局,因此不受影响。

内容的提问来源于stack exchange,提问作者Czinke Csaba

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 19:42:33