-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathselenium-screenshot.js
33 lines (26 loc) · 1.08 KB
/
selenium-screenshot.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
const { writeFile } = require('fs');
const { promisify } = require('util');
const { Builder, By, Key, promise, until } = require('selenium-webdriver');
const firefox = require('selenium-webdriver/firefox');
promise.USE_PROMISE_MANAGER = false;
const binary = new firefox.Binary(firefox.Channel.NIGHTLY);
binary.addArguments("--headless");
const driver = new Builder()
.forBrowser('firefox')
.setFirefoxOptions(new firefox.Options().setBinary(binary))
.build();
async function main() {
await driver.get('https://developer.mozilla.org/');
await driver.findElement(By.id('home-q')).sendKeys('testing', Key.RETURN);
await driver.wait(until.titleIs('Search Results for "testing" | MDN'));
await driver.wait(async () => {
const readyState = await driver.executeScript('return document.readyState');
return readyState === 'complete';
});
const data = await driver.takeScreenshot();
await promisify(writeFile)('screenshot.png', data, 'base64');
await driver.quit();
}
main();