page. $$ eval () не работает должным образом (кукловод) - PullRequest
0 голосов
/ 01 октября 2018

На странице есть группа элементов определенного класса.

Приведенный ниже код не печатает no.элементов:

await page.$$eval(scoreSelector, (ele) => {
    console.log(ele.length);

Принимая во внимание, что это работает как ожидалось:

curLiveScoreElements = await page.$$(scoreSelector)

Пожалуйста, уточните.

1 Ответ

0 голосов
/ 01 октября 2018

При использовании page.$$eval() вы можете получить length рассматриваемых элементов с помощью:

const curLiveScoreElements = await page.$$eval( scoreSelector, ele => ele.length );

console.log( curLiveScoreElements );

Вы также можете использовать page.$$() чтобы получить массив ElementHandle, как вы упомянули, в котором вы можете записать длину результата:

const curLiveScoreElements = await page.$$( scoreSelector );

console.log( curLiveScoreElements.length );

В качестве альтернативы вы можете прослушать 'console' событие, происходящее на странице, и отображение результатов:

page.on( 'console', msg => {
    for ( let i = 0; i < msg.args().length; i++ ) {
        console.log( `${i}: ${msg.args()[i]}` );
    }
});

const curLiveScoreElements = await page.$$( scoreSelector );

await page.evaluate( ele => { console.log( ele.length ); }, curLiveScoreElements );
...