Как запустить сочетание клавишных в браузере в драматурге?Javascript

Форум по Javascript
Ответить
Anonymous
 Как запустить сочетание клавишных в браузере в драматурге?

Сообщение Anonymous »

Я пытаюсь проверить расширение моего браузера. Нажатие 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>

Подробнее здесь: https://stackoverflow.com/questions/794 ... playwright
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»