Как выполнить код Node.js в контексте браузера?

Как выполнить код JS на стороне клиента в операторе page.evaluate() (а не только код JavaScript браузера, код Node.js)?

const puppeteer = require('puppeteer');

(async () => {
 const browser = await puppeteer.launch();
 const page = await browser.newPage();
  await page.goto('https://example.com');
  await page.screenshot({path: 'example.png'});
  await page.evaluate(() => {
    document.querySelector('button[type=submit]').click();
  });
  console.info('yes') 
  await browser.close();
})();

Но разве вы уже этим не занимаетесь? document.querySelector('button[type=submit]').click();должен запускается в контексте браузера

shkaper 25.11.2018 03:35

Или вы имеете в виду, что клик не происходит, пока браузер не закроется? Что именно не работает?

shkaper 25.11.2018 03:36
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
649
1

Ответы 1

Первым параметром, переданным в page.evaluate(), должна быть функция, которая будет оцениваться в контексте страницы в браузере.

Node.js - это серверный код, который должен выполняться на сервере.

Вы можете передавать аргументы из среды Node.js в функцию страницы, используя следующий метод:

// Node.js Environment
const hello_world = 'Hello, world! (from Node.js)';

await page.evaluate(hello_world => {
  // Browser Page Environment
  console.info(hello_world);
}, hello_world);

Вы можете прослушать событие 'console' в контексте страницы и распечатать результат, используя page.on():

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

Другие вопросы по теме