Кукловод не нажимает на данный элемент?

#javascript #node.js #web-scraping #puppeteer

#javascript #node.js #очистка веб-страниц #кукловод

Вопрос:

Я пытаюсь щелкнуть по элементу, который перенаправляет меня на тот же веб-сайт, но, похоже, это не работает.

 async function scrapeJobs(url, next) {
  let browser = await puppeteer.launch({ headless: false });
  let page = await browser.newPage();
  await page.goto(url);

  await Promise.all([
    page.waitForSelector(next),
    page.click(next),
    page.waitForNavigation({ waitUntil: "load" }),
  ]);

  await browser.close();
}

scrapeJobs(
  "https://www.capgemini.com/fr-fr/carrieres/offres-emploi/?search_term=amp;filter_contract_type=stage",
  ".pagination__next"
);

  

Ответ №1:

Я предполагаю, что вам нужно разрешить waitForSelector обещание, прежде чем нажимать на кнопку / ссылку. Это работает для меня:

 async function scrapeJobs(url, next) {
  let browser = await puppeteer.launch({ headless: false });
  let page = await browser.newPage();
  await page.goto(url);

  const nextPage = await page.$(next);
  if (nextPage) {
    await Promise.all([
      nextPage.click(),
      page.waitForNavigation({ waitUntil: "load" }),
    ]);
  }


  await browser.close();
}
  

РЕДАКТИРОВАТЬ: Обещание.весь код выполняется параллельно, поэтому, вероятно, он пытается нажать кнопку «Далее», прежде чем она станет доступной.