Estoy usando Puppeteer para la prueba E2E y ahora estoy tratando de llenar un campo de entrada con el siguiente código:
await page.type('#email', 'test@example.com');Funcionó, pero descubrí que la dirección de correo electrónico se escribió en el campo un carácter por carácter como si un ser humano real estuviera escribiendo.
¿Es posible completar el campo de entrada con la dirección de correo electrónico al mismo tiempo?
Simplemente establezca el valor de la entrada de esta manera:
await page.$eval('#email', el => el.value = 'test@example.com');Aquí hay un ejemplo de su uso en 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(); })();otra forma de hacerlo
await page.focus('#email') await page.keyboard.type('test54')Para ampliar la respuesta aceptada anteriormente, también puede usar $eval con variables de alcance local,
const myLocalValue = 'Adenosine triphosphate'; await page.$eval('input[name=search]', (el, value) => el.value = value, myLocalValue);Esto tomará 'myLocalValue' del ámbito local y lo pasará al ámbito del navegador como 'valor'