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

在Next.js Ubuntu EC2实例上用Selenium模拟键盘粘贴剪贴板内容的问题

问题描述

在Next.js的Ubuntu EC2实例上,使用npm包「copy-paste」复制文本后,通过Selenium模拟键盘快捷键粘贴。本地开发环境运行正常,但Ubuntu EC2实例上仅输入了「v」键,未粘贴剪贴板内容。已尝试Control、Command、Meta等按键组合,均无法解决问题。相关代码如下:

const { By, Key } = require("selenium-webdriver");
var ncp = require("copy-paste");

let resultElement = await driver.findElement(By.id("naver_id_login_anchor"));

await resultElement.click();

console.log("naver login button clicked");

await driver.sleep(3000);

const elem_id = await driver.findElement(By.id("id"));

await elem_id.click();

await driver.sleep(3000);

await ncp.copy(id, () => console.log("id copied"));

await driver.sleep(3000);

await driver
  .actions()
  .keyDown(Key.META)
  .sendKeys("v")
  .keyUp(Key.META)
  .perform();

await driver.sleep(3000);

console.log(await elem_id.getAttribute("value"));
解决方案

核心原因

Ubuntu EC2实例多为无桌面的无头环境,系统剪贴板与Selenium无头浏览器的剪贴板不共享;「copy-paste」包操作的是系统剪贴板,无头浏览器无法读取;模拟键盘快捷键在无头环境下的行为和桌面环境存在差异。

可行解决办法

  • 直接输入文本(最推荐)
    跳过剪贴板流程,直接定位输入框后发送文本,无需依赖剪贴板,兼容性拉满:

    // 替换原复制粘贴的代码段
    await elem_id.sendKeys(id);
    
  • 使用Selenium内置剪贴板API
    Selenium 4及以上版本支持直接操作浏览器剪贴板,无需模拟键盘:

    // 设置浏览器剪贴板内容
    await driver.executeScript('navigator.clipboard.writeText(arguments[0]);', id);
    // 执行粘贴操作
    await elem_id.sendKeys(Key.CONTROL, 'v');
    
  • 配置无头浏览器的剪贴板权限
    启动Chrome时添加启动参数,确保剪贴板功能正常启用,同时适配EC2环境:

    const chrome = require('selenium-webdriver/chrome');
    const options = new chrome.Options();
    options.addArguments('--headless=new');
    options.addArguments('--enable-clipboard');
    options.addArguments('--no-sandbox'); // EC2环境必备参数
    options.addArguments('--disable-dev-shm-usage');
    
    const driver = new webdriver.Builder()
      .forBrowser('chrome')
      .setChromeOptions(options)
      .build();
    
  • 弃用「copy-paste」包
    该包依赖系统桌面环境的剪贴板,在无头服务器环境下兼容性极差,改用浏览器端剪贴板操作或直接输入更可靠。

内容的提问来源于stack exchange,提问作者Chansol Lim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:31:01