I'm using Puppeteer for E2E test, and I am now trying to fill an input field with the code below:
await page.type('#email', '[email protected]');
It worked, but I found the email address was typed into the field one character by one character as if a real human being was typing.
Is it possible to fill the input field with the email address all at one time?
To fill an input field using Puppeteer and JavaScript, we can use the page. keyword. type method.
Submitting a form with attachments async function uploadFile() { const browser = await puppeteer. launch({ headless: false }); const page = await browser. newPage(); await page. goto('https://www.w3schools.com/howto/howto_html_file_upload_button.asp'); const element = await page.
Just set value of input like this: await page. $eval('#email', el => el. value = '[email protected]');
How to enter data in an input field using puppeteer. type(“Selector”, “Value”) is used to send value to any input fields in puppeteer.
Just set value of input like this:
await page.$eval('#email', el => el.value = '[email protected]');
Here is an example of using it on Wikipedia:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://en.wikipedia.org', {waitUntil: 'networkidle2'});
await page.waitForSelector('input[name=search]');
// await page.type('input[name=search]', 'Adenosine triphosphate');
await page.$eval('input[name=search]', el => el.value = 'Adenosine triphosphate');
await page.click('input[type="submit"]');
await page.waitForSelector('#mw-content-text');
const text = await page.evaluate(() => {
const anchor = document.querySelector('#mw-content-text');
return anchor.textContent;
});
console.log(text);
await browser.close();
})();
another way doing
await page.focus('#email')
await page.keyboard.type('test54')
To extend the accepted answer above, you can use $eval with locally scoped variables too,
const myLocalValue = 'Adenosine triphosphate';
await page.$eval('input[name=search]', (el, value) => el.value = value, myLocalValue);
This will take 'myLocalValue' from the local scope, and pass it into the browser scope as 'value'
You can use page.evaluate()
to assign the email string to the value
attribute of the element:
await page.evaluate(() => {
const email = document.querySelector('#email');
email.value = '[email protected]';
});
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