相关疑难解决方法(0)

Puppeteer登录页面.评估

我怎样才能在page.log内部调度一些东西,将它传递给节点并评估页面时使用它?

我实际上想将page.evaluate的进度记录到控制台并向用户显示一些结果.

javascript node.js puppeteer

25
推荐指数
4
解决办法
8222
查看次数

如何使用puppeteer获取所有控制台消息?包括错误,CSP违规,资源失败等

我正在使用puppeteer获取一个页面,该页面在浏览器控制台中有一些错误,但是所有控制台消息都没有触发puppeteer的控制台事件.

puppeteer chromium浏览器显示多个控制台消息

多个控制台消息

但是,puppeteer只有控制台在节点中记录一件事

console在节点中记录一件事

这是我目前使用的脚本:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  page.on('console', msg => console.log('PAGE LOG:', msg.text));
  await page.goto('https://pagewithsomeconsoleerrors.com');
  await browser.close();
})();
Run Code Online (Sandbox Code Playgroud)

编辑:正如我在下面的评论中所述,我确实尝试了Everettss推荐但不起作用的page.waitFor(5000)命令.

Edit2:msg.text意外删除了传播操作员.

Edit3:我在github上用类似但不同的示例屏幕截图打开了一个问题:https://github.com/GoogleChrome/puppeteer/issues/1512

puppeteer

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

Puppeteer无法捕获失败的请求和错误

我试图从失败的请求和js错误中收集数据.

我正在使用以下网站:https://nitzani1.wixsite.com/marketing-automation/3rd-page

该网站要求https://api.fixer.io/1latest,其返回状态代码404,

该页面还包含以下js错误:

"Uncaught (in promise) Fetch did not succeed"
Run Code Online (Sandbox Code Playgroud)

我试图编写下面的代码以捕获404和js错误,但不能.不确定我做错了什么,有什么想法如何解决它?

const puppeteer = require('puppeteer');

function wait (ms) {
    return new Promise(resolve => setTimeout(() => resolve(), ms));
}

var  run = async () => {
    const browser = await puppeteer.launch({
        headless: false,
        args: ['--start-fullscreen']
    });

    page = await browser.newPage();

    page.on('error', err=> {
        console.log('err: '+err);
    });

    page.on('pageerror', pageerr=> {
        console.log('pageerr: '+pageerr);
    });

    page.on('requestfailed', err => console.log('requestfailed: '+err));

    collectResponse = [];

    await page.on('requestfailed', rf => { …
Run Code Online (Sandbox Code Playgroud)

puppeteer

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

如何在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 ×4

javascript ×2

node.js ×1