Pressing Enter button in puppeteer
Pressing enter in puppeteer doesn't seem to have any effect. However, when I press other keys, it does what it should. This works:
await page.press('ArrowLeft');
This doesn't:
await page.press('Enter');
This is how the input looks like:
Any ideas?
EDIT: I've also tried page.keyboard.down & page.keyboard.up to be sure.
Solution 1:
I've used page.keyboard.press('Enter');
usually :) Works for me.
Have a look at the documentation here. I think you should use .keyboard
before .press
for it to work properly.
Solution 2:
page.keyboard.press():
You can use page.keyboard.press()
to simulate pressing the enter key. Any of the following options should work:
await page.keyboard.press('Enter'); // Enter Key
await page.keyboard.press('NumpadEnter'); // Numeric Keypad Enter Key
await page.keyboard.press('\n'); // Shortcut for Enter Key
await page.keyboard.press('\r'); // Shortcut for Enter Key
elementHandle.press():
Additionally, you can use use a combination of page.$()
and elementHandle.press()
to focus on an element before pressing enter:
await (await page.$('input[type="text"]')).press('Enter'); // Enter Key
await (await page.$('input[type="text"]')).press('NumpadEnter'); // Numeric Keypad Enter Key
await (await page.$('input[type="text"]')).press('\n'); // Shortcut for Enter Key
await (await page.$('input[type="text"]')).press('\r'); // Shortcut for Enter Key
page.type():
Furthermore, you can use page.type()
:
await page.type(String.fromCharCode(13));
page.keyboard.type():
Likewise, you can use page.keyboard.type()
:
await page.keyboard.type(String.fromCharCode(13));
page.keyboard.sendCharacter():
Another alternative method would be to use the page.keyboard.sendCharacter()
method:
await page.keyboard.sendCharacter(String.fromCharCode(13));
page.keyboard.down() / page.keyboard.up():
You can also use a combination of page.keyboard.down()
and page.keyboard.up()
:
// Enter Key
await page.keyboard.down('Enter');
await page.keyboard.up('Enter');
// Shortcut for Enter Key
await page.keyboard.down('NumpadEnter');
await page.keyboard.up('NumpadEnter');
// Shortcut for Enter Key
await page.keyboard.down('\n');
await page.keyboard.up('\n');
// Shortcut for Enter Key
await page.keyboard.down('\r');
await page.keyboard.up('\r');
Solution 3:
await page.type(String.fromCharCode(13));
Using this site I noticed that page.type
dispatches beforeinput
and input
events, but page.press
doesn't. This is probably a bug, but fortunately sending the enter keycode (13) seems to work, so we can work around it for now.