playwright读取剪切板(半解决)

方案

firefox

以下的代码,在firefox可以通过测试

test('test', async ({ page }) => {
  // 访问目标页面
  await page.goto('https://www.cnblogs.com/oldsaltfish/p/18825530');

  // 点击触发复制操作的按钮
  await page.getByText('Copy').first().click();

  // 验证剪贴板内容
  const clipboardText = await page.evaluate(async () => {
    return await navigator.clipboard.readText();
  });

  // 预期的复制内容(根据实际内容替换)
  const expectedText = '预期的复制内容';

  // 断言剪贴板内容是否正确
  expect(clipboardText).toBe(expectedText);
});

chromium

以下的代码,在chromium可以通过测试。

test('test', async ({ browser }) => {
  // 创建一个新的浏览器上下文,并启用剪贴板权限
  const context = await browser.newContext({
    permissions: ['clipboard-read', 'clipboard-write'], // 启用剪贴板权限
  });

  // 创建一个新的页面
  const page = await context.newPage();

  // 访问目标页面
  await page.goto('https://www.cnblogs.com/oldsaltfish/p/18825530');

  // 点击触发复制操作的按钮
  await page.getByText('Copy').first().click();

  // 验证剪贴板内容
  const clipboardText = await page.evaluate(async () => {
    return await navigator.clipboard.readText();
  });

  // 断言剪贴板内容不为空
  expect(clipboardText).not.toBe('');

  // 关闭上下文
  await context.close();
});

结论

  1. playwright似乎没有提供统一的接口来调用剪切板。
  2. playwright并不能够提供很好的调试能力,他的调试功能是为自己的测试功能所配备的。调试还是靠浏览器更靠谱,而且测试代码写起来也增加了额外的复杂度。
  3. 对于我们这些工作不是测试人员的人来说,没什么价值,这个东西可以用来写写爬虫或者自动签到。
posted @ 2025-04-18 16:29  魂祈梦  阅读(104)  评论(0)    收藏  举报