微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

page.evaluate中的代码不起作用

如何解决page.evaluate中的代码不起作用

我要自动登录并使用p操纵符从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)如果我不将包含在 page.evaluate 中,则该代码将引发“文档不可用” 错误

解决方法

您需要将innerText添加到col_headers数组的末尾,当前您每次都覆盖整个数组。

即代替

col_headers = elements[i].innerText;

您应该放

col_headers.push(elements[i].innerText);
,
  1. 您不应混用来自浏览器和Node.js(伪造者)上下文的代码。当前,变量col_headers在Node.js(操纵符)上下文中声明,而填充它的代码在浏览器上下文中。
  2. console.log回调中的
  3. page.evaluate()在浏览器上下文中执行,因此数据记录在浏览器控制台中(在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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。