Javascript 木偶演员querySelectorAll没有';不能正确地获取元素

Javascript 木偶演员querySelectorAll没有';不能正确地获取元素,javascript,arrays,node.js,puppeteer,Javascript,Arrays,Node.js,Puppeteer,我正在使用Puppeter并尝试使用document.querySelectorAll获取元素列表,然后循环并执行一些操作,但是,似乎我的代码中有一些错误,它要么不返回任何内容,未定义的,要么返回空的{},尽管我的元素在页面上,我的JS: let elements=wait page.evaluate(()=>document.querySelectorAll(“div[class^='my-class--'])) for(让el表示数组。from(元素)){ //做点什么 } 我的元素和页面

我正在使用Puppeter并尝试使用
document.querySelectorAll
获取元素列表,然后循环并执行一些操作,但是,似乎我的代码中有一些错误,它要么不返回任何内容,
未定义的
,要么返回空的
{}
,尽管我的元素在页面上,我的JS:

let elements=wait page.evaluate(()=>document.querySelectorAll(“div[class^='my-class--']))
for(让el表示数组。from(元素)){
//做点什么
}

我的
元素
页面有什么问题。在这里评估

据我所知,Puppeter将所有HTML作为一个巨大的字符串返回。这是因为节点不在浏览器中运行,因此不会解析HTML。所以DOM选择器不起作用


要解决这个问题,您可以使用模块,它允许您像解析DOM一样使用JQuery获取元素。

因为
puppeter
将所有
HTML
作为字符串返回,您可以使用
DOMParser
如下示例中所示

let doc=new DOMParser().parseFromString('check out','text/html');
让templateContent=doc.querySelector(“模板”);
让template=new DOMParser().parseFromString(templateContent.innerHTML,'text/html');
让target=template.querySelector(“span”);

log([templateContent,target])这是否回答了您的问题?这对我来说很有效,但是,在内容加载到cheerio后,我是否可以点击网页上的按钮,并重新更新cheerio必须解析的内容?Awesome@RyanHolton!您可以完全与页面交互,但需要在
page.evaluate()函数中进行交互。这是在您使用
page.content()
将内容加载到变量之前-在您为Cheerio加载内容之前。因此,在
page.evaluate()
函数中,您可以像往常一样与DOM交互(使用
document.querySelector()
),找到要单击的按钮并运行
。单击()
方法,例如
document.querySelector('.\theButton')。单击()。它将单击按钮并加载新页面,但在获取内容之前给页面一些加载时间。@RyanHolton如果要从两个页面获取内容,您可能需要编写一个函数,该函数将在整个过程中运行两次。