Переопределение showOpenFilePicker с помощью Puppeteer
Как показано здесь , Puppeteer позволяет переопределять функции Javascript. Я хочу переопределить функцию showOpenFilePicker. То есть, когда showOpenFilePicker вызывается веб-страницей. Я хочу запустить другую функцию перед showOpenFilePicker.
const puppeteer = require("puppeteer");
(async () => {
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
await page.evaluateOnNewDocument(() => {
Object.defineProperty(HTMLCanvasElement.prototype, "toBlob", {
value: () => {
console.log("Hey there");
},
});
});
await page.goto("https://example.com");
await page.evaluate(() => {
console.log(HTMLCanvasElement.prototype.toBlob.toString());
});
// await browser.close();
})();
1 ответ
Вы можете переопределить встроенные функции в Puppeteer, как в примере кода ниже. Это заменяет исходную функцию переопределением, которое записывает аргументы в консоль.
const puppeteer = require("puppeteer");
(async () => {
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
await page.evaluateOnNewDocument(() => {
const originalShowOpenFilePicker = window.showOpenFilePicker;
window.showOpenFilePicker = (...args) => {
console.log('Modified `showOpenFilePicker` called with these arguments:', args);
return originalShowOpenFilePicker(...args);
};
});
await page.goto("https://example.com");
await page.evaluate(() => {
console.log(showOpenFilePicker());
});
// await browser.close();
})();