как переопределить методы класса, используя javascript прокси - PullRequest
1 голос
/ 20 февраля 2020

это мой класс

class Chrome {
  constructor(browser, page) {
    this.browser;
    this.page;
  }

  async launch() {
    if (!this.browser) {
      console.log("launching browser...");
      this.browser = await puppeteer.launch({ headless: false, slowMo: 200 });
    }
    if (!this.page) {
      console.log("creating page...");
      this.page = await this.browser.newPage();
    }
  }

  async navigate(url) {
    await this.launch();
    await this.page.goto(url);
  }

  async log(text) {
    console.log(text);
  }


}

class Bot extends Chrome {
  constructor(browser, page) {
    super(browser, page);
  }

  async navigateFirstPage() {
    this.log("navigating first page");
    await this.navigate("http://scraper-playground.surge.sh/#/");
  }
}

module.exports = Bot;

Это мой индексный файл


const Bot = require("./Bot");

const UsePlugin = new Proxy(new Bot(), {
  get: function(object, prop) {

    object.page && object.page.screenshot({ path: "before.jpg" });

    return object[prop];
  }
});

UsePlugin.navigateFirstPage();

Я хочу сделать скриншот до и после каждого действия. например, перед переходом на страницу я хочу сделать скриншот, используя page.screenshot. Итак, как-то мне нужно сделать скриншот, когда вызывается navigateFirstPage().

и мне нужно делать скриншот до и после каждого действия! так что, если я позвоню UsePlugin.anotherAction(), это также должно сделать 2 снимка экрана.

как это сделать внутри javascript ловушки get прокси?

...