Как получить доступ к DOM из функции, установленной внутри JSDOM beforeParse? - PullRequest
0 голосов
/ 26 мая 2020

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

Соответствующий код выглядит так:

jsdom = require("jsdom");
const { JSDOM } = jsdom;
var dom2;

JSDOM.fromFile('./test-page.html', {
    runScripts: "dangerously", resources: "usable", documentRoot: __dirname,
    pretendToBeVisual: true,
    beforeParse: function(window) {
        window.onRender = function() {
            console.log(dom2.serialize());
        }
    }
}).then((dom) => {
    dom2 = dom;
});

Функция window.onRender() вызывается кодом внутри страницы HTML для самоотчета по завершении.

Этот код работает, но механизм, посредством которого dom передается через dom2, меня беспокоит. Это неэлегантно и является теоретическим условием гонки (на практике код внутри страницы загружается долго).

Есть ли другой способ написать этот код, который, по крайней мере, избегает состояния гонки?

...