在Puppeteer中获取列表的第一个元素(等待问题)



这行得通:

await configPage.goto('http://....', {waitUntil: 'domcontentloaded'} );
await configPage.waitForTimeout(2000);
let news = await configPage.$$("article.news");
await configPage.waitForTimeout(2000);
let firstNews = news[0];
await configPage.waitForTimeout(2000);
let content = await firstNews.$eval('div.news-body', s => { return s.textContent.trim(); });
console.log(content);

但是如果没有waitForTimeout,它不会:

await configPage.goto('http://....', {waitUntil: 'domcontentloaded'} );
let news = await configPage.$$("article.news");
let firstNews = news[0];
let content = await firstNews.$eval('div.news-body', s => { return s.textContent.trim(); });
console.log(content);

=比;firstNews未定义!

我认为我必须等待才能获得新闻列表的第一个值,但是我如何才能正确地做到这一点呢?

感谢root,似乎添加waitForSelector解决了问题:

await configPage.goto('http://....', {waitUntil: 'domcontentloaded'} );
await configPage.waitForSelector('article.news', {timeout: 5000});
let news = await configPage.$$("article.news");
let firstNews = news[0];
let content = await firstNews.$eval('div.news-body', s => { return s.textContent.trim(); });
console.log(content);

最新更新