如何在Puppeteer中收听postMessage消息? [英] How to listen to postMessage messages in Puppeteer?

查看:342
本文介绍了如何在Puppeteer中收听postMessage消息?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

https://github.com/GoogleChrome/puppeteer /blob/master/examples/custom-event.js 显示了如何定义自己的事件,但没有显示如何将事件数据传输回Puppeteer外部的代码.

https://github.com/GoogleChrome/puppeteer/blob/master/examples/custom-event.js shows how to define your own event, but doesn't show how to transmit event data back to the code outside Puppeteer.

例如,如果我想使用Puppeteer来启动页面中的事件数据postMessage,请执行以下操作?

For example, if I want to read event data the page postMessages in code using Puppeteer to launch the page, how would you do that?

相关: https://github.com/GoogleChrome/puppeteer/issues/2366

推荐答案

我遇到了同样的问题,下面是对我有用的东西.

I just bumped into the same problem and below is something that worked for me.

使用与<一个带有一些修改的href ="https://github.com/GoogleChrome/puppeteer" rel ="nofollow noreferrer"> Puppeteer 库.

'use strict';

const puppeteer = require('puppeteer');

(async() => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    let msgCollection = [];

    // Define a window.onMessageReceivedEvent function on the page.
    await page.exposeFunction('onMessageReceivedEvent', e => {
        console.log(`${e.type} fired`, e.data || '');
        msgCollection.push(e.data);
    });

    /**
     * Attach an event listener to page to capture a custom event on page load/navigation.
     * @param {string} type Event name.
     * @return {!Promise}
     */
    function listenFor(type) {
        return page.evaluateOnNewDocument(type => {
            window.addEventListener(type, e => {
                window.onMessageReceivedEvent({type, data: e.data});
            });
        }, type);
    }

    await listenFor("message"); // Listen for "message" custom event on page load.

    await page.goto('https://jsfiddle.net/sa1nd0w5/', {waitUntil: 'networkidle0'});

    await browser.close();

    // Do something with the collected data
    console.log(msgCollection);

})();

这篇关于如何在Puppeteer中收听postMessage消息?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆