使用Puppeteer检查网站showDirectoryPicker JS功能

问题描述

你好,我想用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.
  */
});

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...