这行得通:
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);