问题描述
你好,我想用puppeteer检查网站是否有showDirectoryPicker功能。
目前我的代码是这样的:
'use strict';
const puppeteer = require('puppeteer');
(async function main() {
try {
const browser = await puppeteer.launch({ headless:false,executablePath: '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome',});
const [page] = await browser.pages();
await page.goto('https://example.com');
console.log(await page.evaluate(() => typeof showDirectoryPicker === 'function'));
await browser.close();
} catch (err) {
console.error(err);
}
})();
目前此声明
console.log(await page.evaluate(() => typeof showDirectoryPicker === 'function'));
为每个网站返回 True,因为它是一个有效的 JS 函数。但是,如果分析的网站具有 showDirectoryPicker 功能,我想获得 True。
解决方法
如果我正确理解了您的问题,那么您正在尝试评估页面是否调用了 showDirectoryPicker()
方法,而不是浏览器是否支持它。解决此问题的一种方法是使用您自己的实现覆盖该方法,然后如果它被页面调用,则向 Puppeteer 报告。请参阅我的 StackOverflow answer 以使用变体覆盖函数,该变体在每次调用时都会记录。然后,您可以使用 Puppeteer 捕获此日志输出:
page.on('console',(message) => {
/*
Check that the message is what your overridden
custom variant logs.
*/
});