Я пытаюсь написать инструмент производительности с использованием node.js
, поэтому я могу его автоматизировать и сохранить результаты в MySQL
. Инструмент должен собирать, как долго потребовалось, чтобы браузер загружал определенную веб-страницу. Я использую HttpWatch для измерения производительности, и результат отображается в секундах. В браузере используется Firefox. Ниже приведен фрагмент сценария, я использую, чтобы запустить тест производительности:node.js crashing after loop iteration
var MyUrls = [
"http://google.com",
"http://yahoo.com"
];
try {
var win32ole = require('win32ole');
var control = win32ole.client.Dispatch('HttpWatch.Controller');
var plugin = control.Firefox.New();
for (var i=0; i < MyUrls.length; i++) {
var url = MyUrls[i];
console.log(url);
for(var j=0; j < 14; j++) {
// Start Recording HTTP traffic
plugin.Log.EnableFilter(false);
// Clear Cache and cookier before each test
plugin.ClearCache();
plugin.ClearAllCookies();
plugin.ClearSessionCookies();
plugin.Record();
// Goto to the URL and wait for the page to be loaded
plugin.GotoURL(url);
control.Wait(plugin, -1);
// Stop recording HTTP
plugin.Stop();
if (plugin.Log.Pages.Count != 0)
{
// Display summary statistics for page
var summary = plugin.Log.Pages(0).Entries.Summary;
console.log(summary.Time);
}
}
}
plugin.CloseBrowser();
} catch(e) {
console.log('*** exception cached ***\n' + e);
}
После второй итерации внутреннего цикла, я получаю следующее сообщение об ошибке:
C:\xampp\htdocs\test\browser-perf>node FF-load-navigation.js
http://localhost/NFC-performance/Bing.htm
[Number (VT_R8 or VT_I8 bug?)]
2.718
[Number (VT_R8 or VT_I8 bug?)]
2.718
OLE error: [EnableFilter] -2147352570 [EnableFilter] IDispatch::GetIDsOfNames Au
toWrap() failed
есть кто-то видел это раньше? Вы можете мне помочь?
Где находятся документы API для Firefox-плагина, которые вы используете? У меня есть сомнения, что методы типа ClearCache и ClearCookies являются синхронными (т. Е. Блокируют выполнение до завершения операции). Если вместо этого они асинхронны, вам необходимо указать обратные вызовы для них. https://github.com/idobatter/node-win32ole говорит: «Асинхронные, неблокирующие привязки win32ole» - то, что я ожидал. –
Это действительно странно, readme of win32ole говорит, что он должен быть неблокирующим, но примеры показывают все виды функций только синхронно. Как будто readme лежит прямо в вашем лице. –