Не могу получить имя с веб-страницы с помощью кукловода - PullRequest
0 голосов
/ 05 апреля 2019

Я создал скрипт в node в сочетании с puppeteer для извлечения имени, которое заполняется при заполнении ввода на веб-странице.Вот как вы можете получить это имя - после открытия этой веб-страницы поместите 16803 прямо рядом с CP Number и нажмите кнопку search.

Мой следующий скрипт может успешно заполнить поля ввода и заполнитьназвание, нажав кнопку поиска.То, что я не могу сделать, это получить имя результата.Селектор, который я определил, безупречен.Я хотел бы получить имя на лету, не используя return.

Я пытался до сих пор:

const puppeteer = require("puppeteer");
const url = "https://www.icsi.in/student/Members/MemberSearch.aspx";

(async () => {
    const browser = await puppeteer.launch({headless:false});
    const [page] = await browser.pages();
    await page.goto(url, {waitUntil: 'networkidle2'});
    await page.type('input[name="dnn$ctr410$MemberSearch$txtCpNumber"]', '16803');
    await page.click('a#dnn_ctr410_MemberSearch_btnSearch');
    await page.waitFor('.name_head > span');
    await page.evaluate(async () => {
        const elem = document.querySelector('.name_head > span').innerText;
        console.log(elem);
    });
    await page.close();
})();

Приведенный выше скрипт дает мне пустой вывод.

Как я могу получить имя с этого сайта?

1 Ответ

2 голосов
/ 05 апреля 2019

.evaluate запустит скрипт внутри браузера.Вам необходимо выполнить одно из следующих действий:

Возврат и войти в систему за пределами

В большинстве случаев это ваш предполагаемый вариант.Вы хотите получить имя и использовать его позже.Вы можете вернуть значение или JSHandle.

const elemText = await page.evaluate(async () => document.querySelector('.name_head > span').innerText);
console.log(elemText);

Включить console с dumpio

При запуске браузера используйте dumpio: true в качестве опции.Он направит процесс браузера stdout и stderr в process.stdout и process.stderr.По умолчанию установлено значение false.

puppeteer.launch({dumpio:true})

Включить console с помощью page.on('console')

page.on('console', msg => console.log('PAGE LOG:', msg.text()));

Смотреть консоль браузера самостоятельно

Запустить браузер с помощью headless: false и devtools: true, вы можете просмотреть журналы самостоятельно.

puppeteer.launch({ headless: false, devtools: true })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...