clipboard - 如何从 headless puppeteer 操作测试中访问剪贴板的内容?

标签 clipboard puppeteer

我正在编写一个测试,该测试使用 puppeteer 来测试一个组件,该组件在与之交互时将某些内容复制到剪贴板。我想测试交互后剪贴板的内容是否正确。其他资源,如 this github issue提到使用类似 clipboardy 的工具来实现这一点。我尝试使用它并且它在本地工作,但是在我的 headless CI 服务器中运行时,它提示无法访问 X 环境。有没有办法在不启动 X 服务器的情况下访问剪贴板?

我正在编写这样的测试:

const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://mypage.com');

await page.click('#my-component');

// This fails in a headless environment
expect(clipboardy.readSync()).toEqual("Some text");

最佳答案

通过添加 'clipboard-read'允许操纵和使用
剪贴板 API,你可以运行 navigator.clipboard.readText()从阅读
测试中的剪贴板。即使在 headless 环境中,这也能工作:

const browser = await puppeteer.launch();
const context = browser.defaultBrowserContext();
context.overridePermissions(/* browser origin */, ['clipboard-read'])
const page = await browser.newPage();
await page.goto('https://mypage.com');

await page.click('#my-component');

expect(await page.evaluate(() => navigator.clipboard.readText()))
  .toEqual("Some text");
Documentation context.overridePermissions()

关于clipboard - 如何从 headless puppeteer 操作测试中访问剪贴板的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60158746/

相关文章:

javascript - puppeteer -无法读取未定义的属性“单击”

javascript - 如何使用 Puppeteer 打印 HTML 文档?

Java 剪贴板粘贴检查器?

c# - 如何在C#中复制列表框中的选定项?

C# 将 excel 文本格式的数据添加到剪贴板

javascript - 将 JavaScript 变量的输出复制到剪贴板

javascript - 使用 jest-image-snapshot 比较图像时如何忽略 body 标签中的区域或元素?

jquery - 使用 jquery 在单击时将元素内容复制到剪贴板

javascript - 使用 puppeteer 在页面中基于文本的值搜索中使用正则表达式

node.js - 如何将变量传递给 puppeteer page.$eval();