Я использую 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
, меня беспокоит. Это неэлегантно и является теоретическим условием гонки (на практике код внутри страницы загружается долго).
Есть ли другой способ написать этот код, который, по крайней мере, избегает состояния гонки?