Использование подсказки с кукловодом - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь взять пользовательский ввод для полей имени пользователя и пароля и использовать его для заполнения полей на веб-странице с помощью кукловода.Мои два приглашения не сохраняются правильно, потому что когда я вызываю их в page.keyboard.type (имя пользователя), он не может заполнить поля (я считаю, что это потому, что входные данные не являются строкой, а этот требуемый аргумент является строкой)

const puppeteer = require('puppeteer');
const prompt = require('prompt');

prompt.start();

(async() => {
    var result = await new Promise(function (resolve, reject) {
        prompt.get('username', function (err, result) {
            resolve(result);
        });
    });
    var result2 = await new Promise(function (resolve, reject) {
        prompt.get('password', function (err, result2) {
            resolve(result2);
        });
    });
    const browser = await puppeteer.launch({
        headless: false
    });

    const username = String(result);
    const password = String(result2);

    const page = await browser.newPage();
    await page.goto('');
    const BUTTON_SELECTOR1 = '#post-3782 > div > div > p.clear > span > a > img';
    await page.click(BUTTON_SELECTOR1);

    const USERNAME_SELECTOR = '#username';
    const PASSWORD_SELECTOR = '#password';
    const BUTTON_SELECTOR = '#col2 > form > div:nth-child(3) > button';

    await page.click(USERNAME_SELECTOR);
    await page.keyboard.type(username);

    await page.click(PASSWORD_SELECTOR);
    await page.keyboard.type(password);

    await page.click(BUTTON_SELECTOR);
    await page.waitForNavigation();
    await page.goto('');

/*
    await page.close();
    await browser.close();
    */
})();

1 Ответ

0 голосов
/ 08 августа 2018

Функция prompt.get() возвращает объект (т. Е. { username: 'johndoe' }).

Поэтому в следующем примере показан лучший способ получения имени пользователя и пароля для Puppeteer с использованием пакета подсказок :

const credentials = await new Promise((resolve, reject) => {
  prompt.get(['username', 'password'], (error, result) => {
    resolve(result);
  });
});

const username = credentials.username;
const password = credentials.password;

await page.type('#username', username);
await page.type('#password', password);
...