На следующем сайте после ввода такой поисковой фразы, как "ребенок" (попробуйте!), вызов Кукловода page.mouse.down()
не имеет такого же эффекта, как щелчок и удерживание физической мыши: https: //www.dextools.io/app/bsc
После ввода поисковой фразы появляется фальшивое раскрывающееся меню выбора, которое на самом деле является UL
, и я пытаюсь щелкнуть первый результат поиска. Поэтому я использую такой код
await page.mouse.move(200, 350); // let's assume this is inside the element I want
await page.mouse.down();
await new Promise((resolve) => setTimeout(resolve, 2000)); // wait 2 secs
await page.mouse.up();
Ожидаемый эффект от этого кода заключается в том, что в течение 2 секунд, пока Puppeteer «удерживает» кнопку мыши, поддельное раскрывающееся меню остается видимым, а когда Puppeteer «отпускает» кнопку мыши, сайт перенаправляется на результат поиска. для выбранного элемента.
Это именно то, что происходит, когда я использую физическую мышь.
Однако в случае с Puppeteer раскрывающийся список просто исчезает, как если бы я нажал клавишу Escape
, а команда page.mouse.up()
позже больше не действует.
Мне известно, что PPT имеет некоторые особенности в отношении мыши, клавиатуры, удержания и отпускания кнопок и клавиш-модификаторов, особенно при одновременном выполнении всего вышеперечисленного. Например, Drag & Drop не работает должным образом, но ни один из предложенных здесь способов обхода мне не подходит:
Вы правы, ВТФ!?! Теперь мне нужно понять, что такого в моем коде, который дал сбой... и вы выиграете награду!