Как отслеживать запуск экземпляра Firefox после его порождения из Node.js? - PullRequest
0 голосов
/ 22 сентября 2019

Я хочу сделать следующее:

  1. Открыть Firefox
  2. Перейти к Netflix
  3. Войти и удаленно запускать воспроизведение видео.

Я хочу сделать это для того, чтобы сделать своего рода «Smart TV» для нашего домашнего проектора, вместо того, чтобы каждый раз подключать ноутбук.

Я сейчас пытаюсь открыть Firefox, чтобы иметь возможностьмонитор, если он все еще открыт, и сможет закрыть его.Затем я планирую использовать удаленную отладку для управления браузером.

Это мой код для запуска экземпляра браузера:

const Player = require("../../Player");
const child_process = require("child_process");

const DEBUG_FLAG = "--start-debugger-server";
const PROFILE_FLAG = "-P \"node-smart-tv\"";
const NO_REMOTE = "-no-remote";

class BrowserPlayer extends Player {
    constructor(firefoxPath = "firefox", debugPort = 6660) {
        super();
        this.firefoxPath = firefoxPath;
        this.debugPort = debugPort;

        const command = "\"" + firefoxPath + "\" " + DEBUG_FLAG + " " + debugPort + " " + PROFILE_FLAG + " " + NO_REMOTE;
        console.log("Running firefox via: " + command);

        this.firefox = child_process.exec(
            command,
            {
                windowsHide: true
            },
            (error, stdout, stderr) => {
                console.log("Firefox terminated. \nSTDERR:\n" + stderr + "\n\nSTDOUt:\n" + stdout + "\n\nERROR:" + error);
            }
        );

        console.log("Firefox PID: ", this.firefox.pid);
        this.firefox.on("close", (e) => console.log("Firefox stdout closed!"));
        this.firefox.on("error", (e) => console.log("Firefox error: " + e));
        this.firefox.on("exit", (code, signal) => { console.log(`Firefox exit with code ${code}`); });
    }
}

Я запускаю браузер в специальном профиле, созданном для этой цели.В этом профиле включена удаленная отладка.

Однако приведенный выше код запускает Firefox, но считает, что он немедленно закрылся.И действительно, PID, который я вижу в console.log, не является идентификатором, который я вижу в диспетчере задач.

Полагаю, мониторинг процессов в Firefox более сложен?Что я могу сделать, чтобы отслеживать статус браузера?Я хотел бы иметь возможность запускать обычный профиль Firefox вместе с ним.

Не могли бы вы показать мне, как исправить приведенный выше код, чтобы он не терял отслеживание запущенных им процессов Firefox?

...