Во-первых, важно понимать, что существует две основные среды:
- Среда Node.js (кукловод)
- Страница DOM Environment
Вам следует использовать page.evaluate()
, когда вы хотите взаимодействовать со страницей непосредственно в среде DOM страницы, передав функцию и возвращая <
Promise
<
Serializable
>>
, который разрешается в возвращаемое значение переданной функции.
В противном случае, если вы не используете page.evaluate()
, вы будете иметь дело с элементами как объект ElementHandle
в среде Node.js (Puppeteer).
Пример использования:
const example = await page.evaluate( () =>
{
const elements = document.getElementsByClassName( 'example' );
const result = [];
document.title = 'New Title';
for ( let i = 0; i < elements.length; i++ )
{
result.push( elements[i].textContent );
}
return JSON.stringify( result );
});
См. Упрощенную схему ниже: