Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 木偶演员不';单击给定的元素?_Javascript_Node.js_Web Scraping_Puppeteer - Fatal编程技术网

Javascript 木偶演员不';单击给定的元素?

Javascript 木偶演员不';单击给定的元素?,javascript,node.js,web-scraping,puppeteer,Javascript,Node.js,Web Scraping,Puppeteer,我试图在同一个网站中点击一个元素,它可以重定向我,但似乎不起作用 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),

我试图在同一个网站中点击一个元素,它可以重定向我,但似乎不起作用

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=&filter_contract_type=stage",
  ".pagination__next"
);


我的猜测是,在单击按钮/链接之前,您需要解决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();
}

编辑:Promise.all并行运行代码,因此它可能试图在“下一步”按钮可用之前单击该按钮。

我的猜测是,在单击按钮/链接之前,您需要解析
waitForSelector
Promise。这对我很有用:

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();
}
编辑:Promise.all并行运行代码,因此它可能在“下一步”按钮可用之前尝试单击该按钮