如何从无头木偶师测试中访问剪贴板中的内容? [英] How do I access the contents of the clipboard from within a headless puppeteer test?
本文介绍了如何从无头木偶师测试中访问剪贴板中的内容?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在编写一个测试,它使用Pupeteer来测试一个组件,该组件在与之交互时将某些内容复制到剪贴板。我想测试一下交互后剪贴板的内容是否正确。像this github issue这样的其他资源提到使用像clipboardy这样的工具来实现这一点。我尝试使用它,它在本地工作,但是当在我的无头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()
从
测试中的剪贴板。即使在无头环境中也能正常工作:
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.overridePermission()
这篇关于如何从无头木偶师测试中访问剪贴板中的内容?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文