【发布时间】:2021-07-16 14:36:56
【问题描述】:
我正在尝试为我的 React 应用程序中的输入编写一个测试(使用 jest-puppeteer),以一种独特的方式处理自动完成或复制/粘贴字符串。
我希望通过使用 Puppeteer,我可以将文本粘贴到输入中,然后验证页面是否正确更新。不幸的是,我找不到任何可行的例子来说明如何做到这一点。
我尝试使用page.keyboard 模拟CMD+C 和CMD+V,但这些命令似乎在 Puppeteer 中不起作用。
我还尝试使用诸如clipboardy 之类的库来写入和读取操作系统剪贴板。虽然剪贴板确实适用于写入(复制),但读取(粘贴)似乎不会影响 Puppeteer 运行的页面。
我已使用多种方法成功复制了文本,但无法粘贴到输入中。我通过将"copy" 和"paste" 的事件侦听器添加到文档中来验证了这个假设。 "copy" 事件触发,但没有任何方法导致"paste" 事件触发。
以下是我尝试过的几种方法:
await clipboardy.write('1234'); // writes "1234" to clipboard
await page.focus("input");
await clipboardy.read(); // Supposedly pastes from clipboard
// assert input has updated
await clipboardy.write('1234');
await page.focus("input");
await page.keyboard.down('Meta');
await page.keyboard.press('KeyV');
await page.keyboard.up('Meta');
// assert input has updated
await page.evaluate(() => {
const input = document.createElement('input');
document.body.appendChild(input);
input.value = '1234';
input.focus();
input.select();
document.execCommand('copy');
document.body.removeChild(input);
});
wait page.focus("input");
await page.keyboard.down('Meta');
await page.keyboard.press('KeyV');
await page.keyboard.up('Meta');
我认为这里唯一缺少的部分是粘贴文本;但是如何使用 Puppeteer 粘贴文本?
【问题讨论】:
标签: puppeteer