Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Puppeteer Button Press

According to https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagepresskey-options, you can simulate the pressing of a keyboard button with Puppeteer.

Here's what I do:

// First, click the search button
await page.click('#outer-container > nav > span.right > span.search-notification-wrapper > span > form > input[type="text"]');
// Focus on the input field
await page.focus('#outer-container > nav > span.right > span.search-notification-wrapper > span > form > input[type="text"]');
// Enter some text into the input field
await page.type("Bla Bla");
// Press Enter to search -> this doesn't work!
await page.press("Enter");

The pressing of the button doesn't produce anything. It's basically ignored.

How can I simulate the Enter key to submit the form?

like image 524
elena Avatar asked Sep 21 '17 11:09

elena


People also ask

How do you use a puppeteer to click a button?

Puppeteer is capable of handling a link/button on a page. Before clicking an element we must be able to uniquely identify it with the help of any of the locators. In Puppeteer, we can click an element only if its dimensions are greater than zero pixel.

How do you click on a class on a puppeteer?

The details on Puppeteer installation is discussed in the Chapter of Puppeteer Installation. Right-click on the folder where the node_modules folder is created, then click on the New file button. Step 2 − Enter a filename, say testcase1. js.

What does Page waitForNavigation do?

It fills the login form, submits the login form, waits for the form to be submited and then redirects to dashboard. On the server it works fine if I remove await page. waitForNavigation(); from the code and I get redirected to dashboard.


2 Answers

I've figured it out finally. I found inside that same form an anchor element whose type was submit. I then clicked on it and the form was submitted.

Here's the code I've used:

const form = await page.$('a#topbar-search');
await form.evaluate( form => form.click() );

You can also use the $eval method instead of evaluate:

await page.$eval( 'a#topbar-search', form => form.click() );
like image 173
elena Avatar answered Sep 19 '22 22:09

elena


await page.$eval('input[name=btnK]', el => el.click());

this will click the submit button in google. As for your page find out the elements or buttons id and then use it.

like image 33
S.A.MOHAMED SHARUK DEEN DEEN Avatar answered Sep 21 '22 22:09

S.A.MOHAMED SHARUK DEEN DEEN