相关疑难解决方法(0)

Puppeteer console.log - 如何查看 JSHandle@object 内部?

我有一个 React/Redux 应用程序,我正在使用 Puppeteer 进行测试。根据文档,我使用以下代码来显示控制台输出:

page.on('console', msg => {
    for(let i = 0; i < msg.args().length; ++i) {
        let text = msg.args()[i];
        console.log(`${i}: ${text}`);
    }
});
Run Code Online (Sandbox Code Playgroud)

但是,当 redux-logger 将对象记录到控制台(prevState、nextState)时,Puppeeter 会改为显示JSHandle@object在我的控制台输出中。如何查看此对象中的键和属性?

javascript testing reactjs redux puppeteer

13
推荐指数
2
解决办法
3100
查看次数

Puppeteer page.evaluate 未按预期工作

有人可以解释为什么这段代码不起作用。在运行之前我有一个控制台日志,它page.evaluate()记录了我期望的内容,但里面的控制台日志page.evaluate从未运行。

const puppeteer = require('puppeteer');

(async () => {
  try {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto('https://www.example.com');
    page.on('response', async response => {
      const url = response.url();
      if (url.includes('something')) {
        console.log('this code runs');
        await page.evaluate(() => {
          console.log("this code doesn't run");
        });
      }
    });    
  } catch (err) {
    console.log(err);
  }
})();

Run Code Online (Sandbox Code Playgroud)

puppeteer

7
推荐指数
3
解决办法
1万
查看次数

如何在puppeter中打印页面的控制台输出,就像在浏览器中一样?

我一直看到这个错误代码

page.on('console', msg => console.log(msg.text()));
Run Code Online (Sandbox Code Playgroud)

失败

console.log('Hello %s', 'World');
Run Code Online (Sandbox Code Playgroud)

产生

Hello World     // browser
Hello %s World  // puppeteer
Run Code Online (Sandbox Code Playgroud)

好,所以我想也许我可以做到

page.on('console', msg => console.log(...msg.args()));
Run Code Online (Sandbox Code Playgroud)

NOPE:那倒掉了一些巨大的JSHandle东西。

好吧,也许

page.on('console', msg => console.log(...msg.args().map(a => a.toString());
Run Code Online (Sandbox Code Playgroud)

NOPE:打印

JSHandle: Hello %s JSHandle: World
Run Code Online (Sandbox Code Playgroud)

我想我可以通过删除前9个字符来破解它。

我也试过

page.on('console', msg => console.log(...msg.args().map(a => a.jsonValue())));
Run Code Online (Sandbox Code Playgroud)

NOPE:打印

Promise { <pending> } Promise { <pending> }
Run Code Online (Sandbox Code Playgroud)

好吧

page.on('console', async(msg) => {
  const args = Promise.all(msg.args().map(a => a.jsonValue()));
  console.log(...args);
});
Run Code Online (Sandbox Code Playgroud)

不,那是打印

UnhandledPromiseRejectionWarning: TypeError: Found non-callable @@iterator
UnhandledPromiseRejectionWarning: Unhandled …
Run Code Online (Sandbox Code Playgroud)

javascript puppeteer

5
推荐指数
1
解决办法
69
查看次数

Puppeteer 中 main 函数和渲染器函数之间的通信

有没有一种方法可以在 Puppeteer 中的主进程和渲染器进程之间进行通信,类似于Electron 中ipcMainipcRenderer函数。

这篇文章展示了一个简单的应用程序。我发现此功能可通过触发从page主函数到主函数的事件进行调试,反之亦然。

javascript puppeteer

4
推荐指数
1
解决办法
873
查看次数

发送消息到 console.log (jest puppeteer)

为什么我无法看到的console.log在我的消息page.evaluatepage.$page.$$page.$evalpage.$$eval 并不能以访问变量的是?

let variable = 0;
const divColors = await page.evaluate(() => {
      const divs = Array.from(document.querySelectorAll('.map-filters div'));
      let text = divs.map((element, index) => {
        console.log(element.textContent)
        variable =1;
        return element.style.color;
      })
      return text;
    })
Run Code Online (Sandbox Code Playgroud)

为什么我不能做variable=1console.log(element.textContent)在这个例子中?

javascript node.js jestjs puppeteer

1
推荐指数
1
解决办法
1480
查看次数

使用 Puppeteer 获取控制台结果(对象)

我在从 devoloper 工具的控制台日志中已存在的站点获取数据时遇到问题。我是 Puppeteer 的新手,所以我试图获取所有这些控制台日志结果,但它们都有字符串类型。你们能帮我找到一种方法来获取真实的对象或者一种解析它并使用它的方法吗,谢谢

javascript automation node.js web-scraping puppeteer

0
推荐指数
1
解决办法
1332
查看次数