I am having some trouble trying to type text into an input field with Puppeteer. Here is the HTML for the website I am using, and it shows that the id
of the field is creditCardNumber
:
When I try to use page.focus
and page.type
, it say that there is no node for selector. Is this code wrong, or is there something better I can do?
await page.waitFor(1500);
await page.focus('#creditCardNumber');
await page.focus('#creditCardNumber', '1234', {delay: 5});
This is the error I get:
UnhandledPromiseRejectionWarning: Error: No node found for selector: #creditCardNumber
You need to wait for the #creditCardNumber
element to be added to the DOM using page.waitForSelector()
.
Since you are receiving a TimeoutError
, you can extend (or even disable) the maximum navigation time using the timeout
option:
await page.waitForSelector('#creditCardNumber', {timeout: 60000});
Also, it appears that you are attempting to type into the input field using page.focus()
, but you should be using page.type()
instead.
await page.type('#creditCardNumber', '1234', {delay: 5});
As a result, your new code should look something like this:
await page.waitForSelector('#creditCardNumber', {timeout: 60000});
await page.type('#creditCardNumber', '1234', {delay: 5});
Furthermore, you can also use elementHandle.type()
to simplify your code even more:
const credit_card_number = await page.waitForSelector('#creditCardNumber', {timeout: 60000});
await credit_card_number.type('1234', {delay: 5});
Note: If you are still receiving a
TimeoutError
after the above changes, you may want to inspect thepage.content()
or take a screenshot of the page withpage.screenshot()
to verify that the page is returning the results that you are expecting.
DOM element might not be rendered at the time, when you trying to make a focus on it.
Try to use page.waitForSelector
before the page.focus
call:
await page.waitFor(1500);
await page.waitForSelector('#creditCardNumber');
await page.focus('#creditCardNumber');
await page.focus('#creditCardNumber', '1234', {delay: 5});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With