Firefox の Headless モード (Node.js)


次のページと同じことを、Node.js で行ってみました。
Firefox の Headless モード (python3)
まだ、Javascript の実行が出来ていません。timeout の調整が必要です。

headless_firefox.js
// ---------------------------------------------------------------
//  headless_firefox.js
//
//                      Aug/13/2018
//
// ---------------------------------------------------------------
const fs = require('fs')

const { Builder, By, Key, promise, until } = require('selenium-webdriver')
const {promisify} = require('util')

const webdriver = require('selenium-webdriver')

const firefox = require('selenium-webdriver/firefox')
promise.USE_PROMISE_MANAGER = false

var firefoxOptions = new firefox.Options()
firefoxOptions.setBinary('/usr/bin/firefox')
firefoxOptions.headless()
const driver = new Builder()
.forBrowser('firefox')
.setFirefoxOptions(firefoxOptions)
.build();


// ---------------------------------------------------------------
async function main()
{
    const url_target='https://ekzemplaro.org/storytelling/'
    await driver.get(url_target)
    await driver.wait(async () => {
    const readyState = await driver.executeScript('return document.readyState');
    return readyState === 'complete';
  });
    const data = await driver.takeScreenshot();
    await promisify(fs.writeFile)('screenshot.png', data, 'base64');
    await driver.quit();
}

// ---------------------------------------------------------------
main ()
// ---------------------------------------------------------------

実行方法

node headless_firefox.js

screenshot.png が作成されます。

実行結果