我想使用puppeteer自动登录并从PowerBI网站获取文本数据。我能够成功地自动登录,但page.evaluate中的代码不起作用(它包含从网站获取文本数据的代码(以下是代码。
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)
注意:
1(我尝试将console.log添加到函数中,以检查控件是否在其中。但是,它也没有被执行
2(如果我没有将代码包含在页面内。评估,代码将抛出"文档不可用">错误。
- 您不应该混合来自浏览器和Node.js(puppeteer(上下文的代码。目前,变量
col_headers
在Node.js(puppeteer(上下文中声明,而填充它的代码在浏览器上下文中 page.evaluate()
回调中的console.log
是在浏览器上下文中执行的,因此数据记录在浏览器控制台(DevTools中(中
试试这个:
const col_headers = await page2.evaluate(() => {
const headers = [];
const elements = document.getElementsByClassName("columnHeaders");
for (let i = 0; i < elements.length; i++) {
headers.push(elements[i].innerText);
}
return headers;
});
console.log(col_headers)
您需要将innerText添加到col_headers
数组的末尾,目前您每次都在重写整个数组。
即代替
col_headers = elements[i].innerText;
你应该放
col_headers.push(elements[i].innerText);