1

Тема: Заполнить поле ввода в puppeteer

Первый способ:

await page.$eval('#email', el => el.value = 'test@example.com'); 

Конкретный пример:

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.waitFor('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(); 
})(); 

Второй способ:
Используются значение из файла JSON.

var fs = require('fs');
var data = JSON.parse(fs.readFileSync('filename.json', 'utf8'));

const fields = Object.entries(data);

const fillField = async (selector, value, page) => {
  const element = await page.$(selector);
  if (!element) throw new Error(`Could not find element with selector ${selector}`);
  await element.type(value);
};

for (let i=0; i < fields.length; i++) {
  const field = fields[i];
  const value = data[field];
  const selector = `input[name="${field}"`;
  await fillField(selector, value, page);
}

Третий способ:

        const login = await page.evaluate(() => {
                
                document.querySelector("input[name=email]").value = 'Vasia';
                document.querySelector("input[name=email]").click();
                                
                document.querySelector("input[name=password]").value = '7A822gqB9q';
                document.querySelector("input[name=password]").click();
                
            return "...";    
        });
        
        console.log("Логинимся на сайт" + login);

Поделиться