单击链接不会触发或不触发导航

时间:2020-07-31 18:09:15

标签: javascript puppeteer

我正在使用伪造者访问网站并单击链接。不幸的是,我无法单击该链接进行工作。这是一个最小的无效示例:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({headless:false,});
  const page = await browser.newPage();
  page.setViewport({ width: 1600, height: 900 });

  await page.goto('https://dl.acm.org/doi/proceedings/10.1145/3337932');

  let arrMainLinks = await page.$$('.issue-item__title');
  for(let i = 0; i < arrMainLinks.length; ++i)
  {
    await page.waitForSelector('.issue-item__title a', {waitUntil: 'networkidle2'});

    const x = arrMainLinks[i];
    await x.hover();
    await x.click();
    await page.waitForNavigation({waitUntil: 'networkidle0'});

    // do things

    await page.goBack();
    await page.waitForSelector('body', {waitUntil: 'networkidle2'});

    arrMainLinks = await page.$$('.issue-item__title a')
  }
})();

我尝试过的事情:

  • Google快速搜索提示的Promise.all技巧
  • page.eval(x => x.click(), x)
  • waitFor(20000),然后点击

如何才能使它正常工作,只需单击链接?

1 个答案:

答案 0 :(得分:0)

您需要更改选择器:

  let arrMainLinks = await page.$$('.issue-item__title a');

问题所在的方式是单击h2元素,然后将其更改为a元素。