• 扩展新函数给window


    page.exposeFunction(name, puppeteerFunction)

    • name <string> Name of the function on the window object
    • puppeteerFunction <function> Callback function which will be called in Puppeteer's context.
    • returns: <Promise>

    The method adds a function called name on the page's window object. When called, the function executes puppeteerFunction in node.js and returns a Promise which resolves to the return value of puppeteerFunction.

    If the puppeteerFunction returns a Promise, it will be awaited.

    NOTE Functions installed via page.exposeFunction survive navigations.

    An example of adding an md5 function into the page:

    const puppeteer = require('puppeteer');
    const crypto = require('crypto');
    
    puppeteer.launch().then(async browser => {
      const page = await browser.newPage();
      page.on('console', msg => console.log(msg.text()));
      await page.exposeFunction('md5', text =>
        crypto.createHash('md5').update(text).digest('hex')
      );
      await page.evaluate(async () => {
        // use window.md5 to compute hashes
        const myString = 'PUPPETEER';
        const myHash = await window.md5(myString);
        console.log(`md5 of ${myString} is ${myHash}`);
      });
      await browser.close();
    });

    An example of adding a window.readfile function into the page:

    const puppeteer = require('puppeteer');
    const fs = require('fs');
    
    puppeteer.launch().then(async browser => {
      const page = await browser.newPage();
      page.on('console', msg => console.log(msg.text()));
      await page.exposeFunction('readfile', async filePath => {
        return new Promise((resolve, reject) => {
          fs.readFile(filePath, 'utf8', (err, text) => {
            if (err)
              reject(err);
            else
              resolve(text);
          });
        });
      });
      await page.evaluate(async () => {
        // use window.readfile to read contents of a file
        const content = await window.readfile('/etc/hosts');
        console.log(content);
      });
      await browser.close();
    });
    
     
  • 相关阅读:
    python网络编程之最简单的单工通信
    ruby : Exception Notification
    python学习之操作mysql
    python学习之最简单的获取本机ip信息的小程序
    python学习之最简单的用户注册及登录验证小程序
    mongo数据库的导入导出
    mac安装django1.5.4
    mac安装软件管家homebrew
    关于mac安装rails报错clang: error: unknown argument
    在mac上安装nodejs
  • 原文地址:https://www.cnblogs.com/justart/p/9747724.html
Copyright © 2020-2023  润新知