1

Ich versuchte Browsermob-Proxy mit this und this mit Webdriverio verwenden. Es läuft gut, aber es gibt keine har Datei generiert. Ich habe versucht, die Änderung der unterhalb der Liniehar Datei Problem Browsermob-Proxy mit Webdriverio

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

zu

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

im Code unten (von oben Links)

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

aber noch keine har Datei an der Stelle erzeugt wird. Was fehlt hier?

+0

Sie versucht haben, eine console.log Nachricht Hinzufügen zu überprüfen, dass 'cbHAR()' jemals aufgerufen wird? Mein Verdacht ist, dass es aber so ist, dass das Programm beendet wird, bevor die HAR-Generierung/das Schreiben abgeschlossen ist. –

+0

@AndrewRegan Danke. Ich versuche, 'console.log' in' cbHAR() 'und doSeleniumStuff() hinzuzufügen. Ich sehe nicht auf der Konsole, die in 'cbHAR'. So scheint der Code in 'cbHAR()' nicht ausgeführt zu werden. Ich bin neu und "node.js" im Allgemeinen und nicht sicher, wie man mehr debuggt. Siehst du etwas, das offensichtlich im Code fehlt? – user1207289

+0

Vermutlich wird "doSeleniumStuff" innerhalb von 'cbHAR' aufgerufen, wie Sie sagen, funktioniert das, nur dass der Callback nicht aufgerufen wird? Mit Blick auf die Quelle (https://github.com/zzo/browsermob-node/blob/310490298b565a431b93471e0d93096e00650cda/index.js#L51) sieht es wirklich so aus, als müsste es ... –

Antwort

0

Ich konnte schließlich den folgenden Code ausführen, um die har-Datei zu generieren. Hinweis geringfügige Änderung doSeleniumStuff Funktion .end(cb); zu .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);   

}