TypeError:不能将undefined或null转换为对象Puppeteer



问题是我在puppeteer中有一个函数返回对象列表,但是当我想分析它时,它告诉我它是空的或未定义的。

await page.waitForSelector(('.carousel .loaded'), { timeout: 90000 })
const _img = await page.evaluate(
() => document.querySelectorAll('.carousel .loaded li'));

当我分析答案时,它告诉我它是空的。

if( Object.keys(_img).length > 0){ //do }
if( _img.length > 0){ //do }

如果我在浏览器控制台中重复查询,它就会工作。

问题是@vsemozhebuty说:

不幸的是,page.evaluate()只能传输可序列化的值(粗略地说,JSON可以处理的值)。document.querySelectorAll()返回一个不可序列化的DOM元素集合。您需要返回可序列化的值(文本数组等)或使用page.$$(selector)ElementHandleAPI之类的东西。

我必须返回一个可序列化的值(文本数组等):

await page.waitForTimeout(5000)
const _img = await page.evaluate(
() => 
Array.from(document.querySelectorAll('.carousel .loaded li [role="img"]')).map((d) => d.getAttribute('class'))
);

相关内容

  • 没有找到相关文章

最新更新