1

Webdriverio ile this ve this kullanarak browsermob-proxy kullanmaya çalışıyordum. İyi çalışır, ancak har dosya oluşturulmaz. Benhar dosya sorunu webdriverio ile browsermob-proxy sorunu

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); 
} 

ama hala yerde hiçbir har dosyası oluşturulur (yukarıdaki bağlantılardan) aşağıdaki kodu

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

için aşağıdaki satırı

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

değiştirmeyi denedim. Burada ne eksik?

+0

için .end(cb); den doSeleniumStuff işlevine küçük bir değişiklik Not? Şüphem şuydu, ancak programın HAR kuşağı/yazımı tamamlanmadan çıkması. –

+0

@AndrewRegan Teşekkürler. CbHAR() 've doSeleniumStuff() içine' console.log' eklemeye çalışıyorum. Konsolda, cbHAR'ın içinde göremiyorum. Yani kodu içinde görünüyor cbHAR() 'idam edilmez. Bu ve 'node.js' için genel olarak yeni ve daha fazla hata ayıklama emin değilim. Açıkça kodda eksik bir şey görüyor musunuz? – user1207289

+0

Muhtemelen 'doSeleniumStuff', 'cbHAR' içinde çağrılır, siz bu çalışmayı söylediğin gibi, sadece geri çağırma yapılmaz mı? Kaynağa bakarak (https://github.com/zzo/browsermob-node/blob/310490298b565a431b93471e0d93096e00650cda/index.js#L51) gerçekten olması gerektiği gibi görünüyor ... –

cevap

0

Son olarak har dosyasını oluşturmak için aşağıdaki kodu çalıştırabildim. Eğer bir console.log mesajı `cbHAR()` hiç çağrılan kontrol etmek ekleyerek denediniz .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);   

}