如何在剧作家中触发浏览器扩展程序的键盘快捷键? 我正在尝试测试我的浏览器扩展程序。将CTRL+Q命令按下当前页面中的HTML形式。我想测试这种行为,但是剧作家似乎在测试期间无法触发它。

问题描述 投票:0回答:0
这样的事件类似:

import test, { chromium, expect } from "@playwright/test";
import path from "path";
import fs from 'fs';

test.use({ browserName: 'chromium' });

test('Open example.com and trigger the popup form', async () => {
  const pathToExtension = path.resolve(__dirname, '..', 'dist');
  const userDataDir = path.resolve(__dirname, '..', 'tmp-profile');

  if (fs.existsSync(userDataDir)) {
    fs.rmSync(userDataDir, { recursive: true, force: true });
  }

  const browserContext = await chromium.launchPersistentContext(userDataDir, {
    headless: false,
    args: [
      `--disable-extensions-except=${pathToExtension}`,
      `--load-extension=${pathToExtension}`
    ]
  });

  const page = await browserContext.newPage();
  await page.goto('https://example.com');
  await page.waitForLoadState('networkidle');

  console.log('Browser launched...');
  
  page.keyboard.press('Control+q'); // doesn't happen

  const popupForm = page.getByLabel('extension-popup-form');
  expect(popupForm).toBeVisible(); // fails here because the form wasn't triggered
  expect(popupForm).toHaveText('https://example.com');

  await popupForm.press('Enter');
  expect(page).toHaveTitle('Blocked | On Pace Extension');

  browserContext.close();
});

在自动快捷方式快速时,分别模拟了每个键按下:

    await page.evaluate(() => { document.dispatchEvent(new KeyboardEvent('keydown', { key: 'q', code: 'KeyQ', ctrlKey: true, bubbles: true, cancelable: true })); });
  • trimed着重于启动事件之前,重点关注页面的元素;
tried在
Https://www.toptal.com/developers/keycode
上运行测试,以确保按键的代码正确(它们是)。 在运行事件之前对超时值进行实验:
await page.keyboard.down('Control'); await page.waitForTimeout(800); await page.keyboard.press('q'); await page.waitForTimeout(600); await page.keyboard.up('Control');

eSlint要求 - 以获取此代码的警告。

如果这不起作用,请与您的扩展程序共享实际页面和

小型,完整的示例
(或简化代码以复制问题)。

javascript typescript testing google-chrome-extension playwright
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.