puppeteer-keyboard
is library that simplifies usage of keyboard and keyboard schroucuts in puppeteer.
It converts string representation like "text[Enter]" into keyboard keys sequence. Very helpful in page automation.
npm i puppeteer-keyboard
# OR yarn add puppeteer-keyboard
Example code with explanation in comments.
const { Keyboard } = require("puppeteer-keyboard");
const input = await page.$("my.input");
const kb = new Keyboard(page);
//Write text and delete it
await kb.type("Some text", input);
await kb.type("[Ctrl+A]", input);
await kb.type("[Delete]", input);
// Of course it can be in one line:
await kb.type("Some text[Ctrl+A][Delete]", input);
// If field is already focused, the second parameter can be ommited:
await input.focus();
await kb.type("Some text[Ctrl+A][Delete]");
// or
await input.focus();
await kb.type("Some text");
await kb.type("[Ctrl+A]");
await kb.type("[Delete]");
// Keyboard schroucuts can be larger (there is no limit of keys):
await kb.type("Some text[Ctrl+Shift+ArrowRight]");
Example enter's to google.com page, search for puppeteer and uses second result from search sugestions.
const { Keyboard } = require("puppeteer-keyboard");
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
await page.goto('https://duckduckgo.com');
const input = await page.$("input[name=q]");
const kb = new Keyboard(page, { delay: 250 });
await kb.type("puppeteer[ArrowDown][ArrowDown][Enter]", input);
await new Promise(r => setTimeout(r, 5000));
await browser.close();
})();
Library accepts all keys available on the keyboard. Full list of keycodes are on official puppeteer page: https://github.com/GoogleChrome/puppeteer/blob/master/lib/USKeyboardLayout.js
github repo: https://github.com/piotrkluz/puppeteer-keyboard NPM: https://www.npmjs.com/package/puppeteer-keyboard