Javascript page.evaluate()中的代码不起作用
我想使用Puppeter自动登录并从PowerBI网站获取文本数据。我能够成功地自动登录,但是page.evaluate中的代码不起作用(它包含从网站获取文本数据的代码)以下是代码Javascript page.evaluate()中的代码不起作用,javascript,dom,puppeteer,console.log,Javascript,Dom,Puppeteer,Console.log,我想使用Puppeter自动登录并从PowerBI网站获取文本数据。我能够成功地自动登录,但是page.evaluate中的代码不起作用(它包含从网站获取文本数据的代码)以下是代码 col_headers=[] await page2.evaluate(() => { var elements = document.getElementsByClassName("columnHeaders"); for (var i = 0; i < eleme
col_headers=[]
await page2.evaluate(() => {
var elements = document.getElementsByClassName("columnHeaders");
for (var i = 0; i < elements.length; i++) {
col_headers = elements[i].innerText;
}});
console.log(col_headers)
col_头=[]
等待第2页。评估(()=>{
var elements=document.getElementsByClassName(“columnHeaders”);
对于(var i=0;i
注:1) 我尝试在函数中添加console.log,以检查控件是否在其中。但是,它也没有被执行。
2) 如果我没有将代码包含在页面中。evaluate,代码将抛出“document not available”(文档不可用)错误。您需要将内部文本添加到
列标题
数组的末尾,目前您每次都在过度写入整个数组
i、 e.代替
col_headers = elements[i].innerText;
你应该把
col_headers.push(elements[i].innerText);
col_headers
是在Node.js(puppeter)上下文中声明的,而填充它的代码是在浏览器上下文中声明的console.log
内部page.evaluate()
回调在浏览器上下文中执行,因此数据记录在浏览器控制台(DevTools)中const col_headers=wait page2.评估(()=>{
常量头=[];
const elements=document.getElementsByClassName(“columnHeaders”);
for(设i=0;i
非常感谢您指出这一点。但是,控件不在page.evaluate函数本身的范围内。