Я пытаюсь проверить расширение моего браузера. Нажатие Ctrl+Q Команда вводит HTML -форму в текущую страницу. Я хочу проверить это поведение, но драматург, похоже, не может вызвать его во время тестов, что приводит к провалу теста. Если я нажимаю на ярлык вручную во время запуска экземпляра браузера, форма появляется правильно. Что я делаю не так?
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);
Пробовал вручную нажать на команду, когда экземпляр браузера работал, чтобы убедиться, что расширение было правильно загружено (это было). < Br /> < /ul>
Я пытаюсь проверить расширение моего браузера. Нажатие Ctrl+Q Команда вводит HTML -форму в текущую страницу. Я хочу проверить это поведение, но драматург, похоже, не может вызвать его во время тестов, что приводит к провалу теста. Если я нажимаю на ярлык вручную во время запуска экземпляра браузера, форма появляется правильно. Что я делаю не так?[code]import test, { chromium, expect } from "@playwright/test"; import path from "path"; import fs from 'fs';
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.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);[/code]
Пробовал вручную нажать на команду, когда экземпляр браузера работал, чтобы убедиться, что расширение было правильно загружено (это было). < Br /> < /ul>