Кукловод: Как распознать, что SPA достиг своего дна и прокрутка невозможна? - PullRequest
0 голосов
/ 18 октября 2018

Я строю абстракцию / упрощение для Puppeteer в Nodejs, чтобы очистить одностраничные приложения.Одним из основных действий, которые он будет выполнять, является многократная прокрутка страницы для запуска вызова AJAX.в основном я делаю:

(()=>{
  page.on('response', async res => {   
   if (res.includes('/someAjaxAction')) {  
   numResponses++
  }
})

  while(numResponses<20){

    await scrollDown();//Calling my function that scrolls down.

    await Promise.delay(400)//Creating a delay just in case...
}
})()

Я настраиваю прослушиватель события onResponse и рассчитываю, сколько раз был выполнен соответствующий вызов ajax.Я ругаю бесконечно, пока это условие не будет выполнено, вот и все - я могу использовать полный HTML.

Проблема в том, что это заставит клиентского кодера предоставлять несколько ожидаемых ajax-вызовов.Я хотел бы как-то распознать ситуацию, когда прокрутка невозможна.Например: мы достигли конца страницы.

Есть идеи, как я могу абстрагировать такую ​​ситуацию?

1 Ответ

0 голосов
/ 19 октября 2018

Нет надежного способа, но я имею дело с бесконечностью в этом порядке,

  • Соберите данные из цели
  • Удалите целевой элемент
  • Прокрутите дляопределенное количество времени
  • Дождитесь появления нового целевого элемента
  • ... цикл до тех пор, пока не останется содержимого

Самый простой способ узнатьвсе готово - умно использовать try...catch для функции page.waitFor.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...