Код: Выделить всё
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();
});
< /code>
Я попробовал это: < /p>
[*] Событие для отправки как это: < /li>
< /ul>
await page.evaluate(() => {
document.dispatchEvent(new KeyboardEvent('keydown', {
key: 'q',
code: 'KeyQ',
ctrlKey: true,
bubbles: true,
cancelable: true
}));
});
< /code>
смоделировать каждую клавишу отдельно, если автоматический сочетание должно было быстро: < /li>
< /ul>
await page.keyboard.down('Control');
await page.waitForTimeout(800);
await page.keyboard.press('q');
await page.waitForTimeout(600);
await page.keyboard.up('Control');
< /code>
Пробовал сосредоточиться на элементе страницы перед запуском события; < /li>
Пробовал запустить тест на https: / /www.toptal.com/developers/keycode, чтобы гарантировать, что коды прессованных ключей были правильными (они были).
[*] Пробовал экспериментировать со значениями тайм -аута перед запуском Событие: < /li>
< /ul>
await page.waitForTimeout(5000);Подробнее здесь: https://stackoverflow.com/questions/794 ... playwright