1

Я пытался использовать browserermob-прокси используя this и this с webdriverio. Он работает нормально, но theres нет har файл создан. Я попытался изменить строку нижеhar file issue browserermob-proxy с webdriverio

fs.writeFileSync('stuff.har', data, 'utf8'); 

в

fs.writeFile('/Users/abc/xyz/stuff.har', data, 'utf8'); 

в коде ниже (из ссылки выше)

var Proxy = require('browsermob-proxy').Proxy 
    , webdriverio = require("./node_modules/webdriverio/") 
    , fs = require('fs') 
    , proxy = new Proxy() 
; 
proxy.cbHAR('search.yahoo.com', doSeleniumStuff, function(err, data) { 
     if (err) { 
      console.error('ERR: ' + err); 
     } else { 
      fs.writeFileSync('stuff.har', data, 'utf8'); 

     } 
}); 

function doSeleniumStuff(proxy, cb) { 
    var browser = webdriverio.remote({ 
     host: 'localhost' 
     , port: 4444 
     , desiredCapabilities: { browserName: 'firefox', seleniumProtocol: 'WebDriver', proxy: { httpProxy: proxy } } 
    }); 

    browser 
     .init() 
     .url("http://search.yahoo.com") 
     .setValue("#yschsp", "javascript") 
     .submitForm("#sf") 
     .end(cb); 
} 

, но до сих пор не har файл на месте не генерируется. Что здесь отсутствует?

+0

вы пробовали добавив console.log сообщение, чтобы проверить, что 'cbHAR()' никогда не вызывается? Мое подозрение заключается в том, что он работает, но программа выходит до завершения генерации/записи HAR. –

+0

@AndrewRegan Спасибо. Я пытаюсь добавить 'console.log' внутри' cbHAR() 'и doSeleniumStuff(). Я не вижу на консоли, внутри внутри 'cbHAR'. Поэтому код внутри 'cbHAR()' не выполняется. Я новичок в этом и «node.js» вообще и не уверен, как отлаживать больше. Вы видите что-то явно отсутствующее в коде? – user1207289

+0

Предположительно, 'doSeleniumStuff' действительно вызывается в' cbHAR', как вы говорите, это работает, это просто, что callback не вызван? Глядя на источник (https://github.com/zzo/browsermob-node/blob/310490298b565a431b93471e0d93096e00650cda/index.js#L51), он действительно выглядит так, как будто ... –

ответ

0

Я, наконец, смог запустить приведенный ниже код для создания файла har. Обратите внимание, незначительные изменения в doSeleniumStuff функции от .end(cb); к .end().then(cb);

var Proxy = require('browsermob-proxy').Proxy 
    , webdriverio = require("./node_modules/webdriverio/") 
    , fs = require('fs') 
    , proxy = new Proxy() 
; 

proxy.cbHAR('search.yahoo.com', doSeleniumStuff, function(err, data) { 

     if (err) { 

      console.error('ERR: ' + err); 
     } else { 

      fs.writeFileSync('stuff.har', data, 'utf8'); 
      //fs.writeFile('/Users/hanu/Desktop/amit/webdriverio/webdriverio-test/stuff.har', data, 'utf8'); 

     } 
}); 

function doSeleniumStuff(proxy, cb) { 

    var browser = webdriverio.remote({ 
     host: 'localhost' 
     , port: 4444 
     , desiredCapabilities: { browserName: 'firefox', seleniumProtocol: 'WebDriver', proxy: { httpProxy: proxy } } 
    }); 

    browser 
     .init() 
     .url("http://search.yahoo.com") 
     .setValue("#yschsp", "javascript") 
     .submitForm("#sf") 
     .end().then(cb);   

}