Selenium + Firefox:我如何同时使用Firefox二进制规范和Firebug扩展?

时间:2015-11-28 16:45:35

标签: javascript node.js selenium selenium-webdriver firebug

目前我正在使用以下代码。

var co = require('co');
var WebDriver = require('selenium-webdriver');
var SeleniumServer = require('selenium-webdriver/remote').SeleniumServer;

co(function *() { // async
    var server = new SeleniumServer('/path/to/selenium', {
        port: 4444,
        jvmArgs: ['-Dwebdriver.firefox.bin=path/to/firefox'] // Firefox binary specification
    });
    yield server.start(); // await
    var driver = new WebDriver
                 .Builder()
                 .usingServer(server.address())
                 .withCapabilities(WebDriver.Capabilities.firefox())
                 .build();

});

现在我需要添加Firebug扩展以将网络流量提取为*.har文件。我用谷歌搜索this

var firefox = require('selenium-webdriver/firefox');

var profile = new firefox.Profile();
profile.addExtension('/path/to/firebug.xpi');
profile.setPreference('extensions.firebug.showChromeErrors', true);

var options = new firefox.Options().setProfile(profile);
var driver = new firefox.Driver(options);

要看到这一点,似乎可以使用以下方法:

  • firefox.Options().setProfile()
  • firefox.Options().setBinary()

但是,firefox.Options()总是不返回任何内容......

enter image description here

发生了什么事?

1 个答案:

答案 0 :(得分:1)

根据source codeOptions()函数调用应该不返回任何内容:

var Options = function() {
  /** @private {Profile} */
  this.profile_ = null;

  /** @private {Binary} */
  this.binary_ = null;

  /** @private {webdriver.logging.Preferences} */
  this.logPrefs_ = null;

  /** @private {webdriver.ProxyConfig} */
  this.proxy_ = null;
};

您需要使用new初始化Options对象:

var options = new firefox.Options();
console.log(options);

可提供多种方法,包括setProfile()setBinary()等。