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

Selenium sendKeys方法异常:字符串输入被截断问题求助

解决Selenium sendKeys输入长字符串被截断的问题

这种截断问题在Linux headless环境下确实偶尔会碰到,结合你给出的环境和版本信息,给你几个实用的排查和解决思路:

  • 升级ChromeDriver与Chrome版本
    你当前使用的ChromeDriver 2.34是比较老旧的版本(对应Chrome 61-63),这个版本存在不少输入相关的已知bug。建议升级到和你当前Chrome版本完全匹配的最新稳定版ChromeDriver——新版本修复了很多长字符串输入、headless模式下的交互问题,大概率能直接解决你的截断问题。

  • 改用JavaScript注入设置输入值
    有时候sendKeys在headless环境下会因为渲染或输入模拟的延迟导致截断,用JavaScript直接设置输入框的值会更可靠。示例代码如下:

    WebElement targetElement = search.getElement();
    // 设置输入框值
    ((JavascriptExecutor) driver).executeScript("arguments[0].value = '700091495001458';", targetElement);
    // 如果页面需要触发输入事件(比如校验、自动补全),再加上这行
    ((JavascriptExecutor) driver).executeScript("arguments[0].dispatchEvent(new Event('input'));", targetElement);
    
  • 优化Chrome headless模式配置
    如果你是在headless模式下运行Chrome,旧版的--headless参数在处理交互时可能存在兼容性问题。建议改用新版headless模式,并设置合理的窗口大小:

    ChromeOptions options = new ChromeOptions();
    options.addArguments("--headless=new"); // Chrome 96+支持的新版headless,更接近正常浏览器行为
    options.addArguments("--window-size=1920,1080"); // 设置窗口大小,避免渲染区域异常
    options.addArguments("--disable-gpu");
    WebDriver driver = new ChromeDriver(options);
    
  • 分批次输入字符串
    如果上面的方法都没效果,可以尝试模拟手动逐字符输入的方式,把长字符串拆分成单个字符逐个输入,降低一次性输入的压力:

    String inputText = "700091495001458";
    WebElement targetElement = search.getElement();
    targetElement.clear(); // 先清空输入框
    for (char c : inputText.toCharArray()) {
        targetElement.sendKeys(String.valueOf(c));
        // 可选:添加短暂延迟,避免输入过快导致丢失
        // Thread.sleep(50);
    }
    

这些方法在类似的AWS EC2 Linux环境下解决过不少类似的输入截断问题,你可以逐个尝试看看效果。

内容的提问来源于stack exchange,提问作者veeresh tn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:31:10