我添加了一个选项来执行 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);
}
})();
我真的不知道为什么会这样,希望高手帮助我。
答案 0 :(得分:1)
也许试试
await page.evaluate((element) => { element.click(); }, text);
代替
await text.click();
如果我没记错的话,puppeteer 的 elementHandle.click()
是一个更复杂的操作,有一些额外的检查,所以有时当前者失败时,一个更简单的评估 Web API element.click()
就足够了。