“错误:节点不可见或不是 HTMLElement”。傀儡师

时间:2021-02-10 15:31:03

标签: javascript automation puppeteer

我添加了一个选项来执行 scrollpagetobottom。使用这个 npm。

<块引用>

const scrollPageToBottom = require('puppeteer-autoscroll-down');

在它之后,我有一个循环应该点击页面上的许多元素但是在我使用 npm 在一次点击后向下滚动后,我得到这个错误:

<块引用>

错误:节点不可见或不是 HTMLElement

(async () => {
  try {
    //Launching Puppeteer
    const browser = await puppeteer.launch({
      headless: false,
    });
    const page = await browser.newPage();

    //going to new Page
    await page.goto(
      'https://translatewiki.net/wiki/Special:Translate?group=%21additions&language=fr&filter=%21translated&action=translate'
    );

    //waiting for the Js to load(DOM)
    await page.waitForSelector('.tux-message');

    await scrollPageToBottom(page, 5000, 2000);
    console.log('finish scroll');
    //Clicking on Questions to Load the suggestions
    const texts = await page.$$(` div.eight.columns.tux-list-message`);
    for (const text of texts) {
      await new Promise((r) => setTimeout(r, 100));
      await text.click();
    }
    } catch (err) {
    console.log(err);
  }
})();

我真的不知道为什么会这样,希望高手帮助我。

1 个答案:

答案 0 :(得分:1)

也许试试

await page.evaluate((element) => { element.click(); }, text);

代替

await text.click();

如果我没记错的话,puppeteer 的 elementHandle.click() 是一个更复杂的操作,有一些额外的检查,所以有时当前者失败时,一个更简单的评估 Web API element.click() 就足够了。