typescript - Tatal Dengan Anak Panah Bawah dalam Puppeteer
Jadi saya sedang mengusahakan satu ciri dalam aplikasi saya yang melumpuhkan tatalan menggunakan kekunci anak panah pada badan ketika menu dibuka, dan membiarkan tingkah laku seperti biasa apabila tidak.
Saya sedang mencuba untuk menguji tingkah laku itu dalam Puppeteer, tetapi saya nampaknya tidak dapat membuat tetingkap bergerak apabila saya menekan anak panah ke bawah. Berikut adalah beberapa contoh tentang apa yang saya lakukan sama ada dalam pelaksanaan dan dalam ujian saya:
const disableArrowScroll = (event: KeyboardEvent) => {
if (
isOpen &&
(event.key === 'ArrowDown' ||
event.key === 'ArrowUp' ||
event.key === 'ArrowLeft' ||
event.key === 'ArrowRight')
) {
event.preventDefault();
}
};
it('does not effect scroll when menu is closed', async () => {
await menuClosed(); // Times out if menu is not closed
await page.focus('body');
await keyboard.press('ArrowDown');
expect(await page.evaluate(() => window.scrollY > 0)).toBeTruthy();
});
Saya telah memastikan bahawa halaman boleh digulung dengan mengehadkan tetingkap paparan, dan benar-benar keliru mengapa window.scrollY kekal 0. Adakah saya terlepas sesuatu? Dalam demo yang dijalankan sebenar, kod nampaknya berfungsi seperti yang dijangka.
Jawapan #1
Isu ini ialah, selepas memulakan penekanan kekunci anak panah ke bawah, anda perlu memberi masa kepada halaman untuk menatal ke bawah. Anda boleh melakukan itu dengan menukar...
await keyboard.press('ArrowDown');
...kepada...
await keyboard.press('ArrowDown');
await new Promise((resolve) => setTimeout(resolve, 1000)); // Wait 1s
