Моя цель - открыть экземпляр puppeteer-chromium в качестве дочернего процесса в среде nodejs и прослушивать все щелчки, которые пользователь сделает так, чтобы эти события были доступны из родительского процесса. Поэтому я думаю, что поток событий необходим, но я не знаю, как отправить их из метода оценки (объект процесса недоступен в этом контексте - «процесс не определен» в журналах хрома).
В настоящее время я пытаюсь добавить прослушиватель кликов внутри контекста страницы, но есть ли способ получить эти события вне метода оценки?
Я знаю, что метод оценки может вернуть обещание, но это только одно значение, поэтому этого недостаточно. Я хотел бы собрать все щелчки, пока я не закрою окно хрома.
Заранее благодарим за все советы.
Мой пример кода:
// parent.js
const child = require('child_process');
const childprocess = child.fork('./childprocess.js');
childprocess.on('message', (msg) => {
console.log('Message from child', msg);
// here I'd like to get click events from childprocess
// eg. saving them in database
});
// childprocess.js
const puppeteer = require('puppeteer');
(async () => {
await process.on('message', (m) => {
process.send(m)
})
const browser = await puppeteer.launch(options);
const page = await browser.newPage();
await page.goto('http://someurl.com');
await page.evaluate( (processHandle) => {
document.addEventListener('click', (event) => {
console.log(event); // event is logged in chromium dev console
processHandle.send({msg: event}); // nothing happens
})
}, process);
})()