Проверка того, работает ли сайт 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. Однако я хочу получить True, если на анализируемом веб-сайте есть функция showDirectoryPicker.

1 ответ

Если я правильно понимаю ваш вопрос, вы пытаетесь оценить, вызывает ли страница showDirectoryPicker()

метод, а не если браузер поддерживает его. Один из способов приблизиться к этому - переопределить метод вашей собственной реализацией, которая затем сообщит Puppeteer, если он вызывается страницей. См. Мой ответ на StackOverflow о переопределении функции с вариантом, который регистрируется при каждом вызове. Затем вы можете поймать этот вывод журнала с помощью Puppeteer:
      page.on('console', (message) => {
  /*
    Check that the message is what your overridden
    custom variant logs.
  */
});