Search code examples
javascriptnode.jsseleniumwebdriverbrowsermob

Configure WebDriverIO with BrowserMobProxy


Does anyone have a proper example on how to configure BrowserMobProxy with WebDriverIO? This is so I can capture network traffic. I previously had it working with WebDriverJS, which is essentially a deprecated version of WebDriverIO.


Solution

  • You can use the below code to do that. Make sure your browsermob proxy and selenium server is running. Then copy paste below code in a test.js file and put it in webdriverio installed folder. From cmd go to that folder and run node test.js . stuff.har should be generated where test.js is located.

    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().then(cb);        
    
    }