通过webdriver控制firefox的最佳方式

通过webdriver控制firefox的最佳方式,firefox,selenium,selenium-webdriver,firefox-addon,firefox-addon-sdk,Firefox,Selenium,Selenium Webdriver,Firefox Addon,Firefox Addon Sdk,我需要通过webdriver控制Firefox浏览器。注意,我并没有试图控制页面元素(即查找元素、单击、获取文本等);相反,我需要访问Firefox的分析器和强制gc(即,我需要Firefox的Chrome授权和sdk)。在上下文中,我正在创建一个微基准框架,而不是运行一个普通的webdriver测试 显然,原始webdriver无法工作,所以我一直在尝试 1) 创建一个firefox扩展/插件,满足我的需要:即 var customActions = function() { consol

我需要通过webdriver控制Firefox浏览器。注意,我并没有试图控制页面元素(即查找元素、单击、获取文本等);相反,我需要访问Firefox的分析器和强制gc(即,我需要Firefox的Chrome授权和sdk)。在上下文中,我正在创建一个微基准框架,而不是运行一个普通的webdriver测试

显然,原始webdriver无法工作,所以我一直在尝试

1) 创建一个firefox扩展/插件,满足我的需要:即

var customActions = function() {
  console.log('calling customActions.')
  // I need to access chrome authority:
  var {Cc,Ci,Cu} = require("chrome");
  Cc["@mozilla.org/tools/profiler;1"].getService(Ci.nsIProfiler);
  Cu.forceGC();
  var file = require('sdk/io/file');
  // And do some writes:
  var textWriter = file.open('a/local/path.txt', 'w');
  textWriter.write('sample data');
  textWriter.close();
  console.log('called customActions.')
};
2) 将我的
自定义操作
功能公开到页面:

var mod = require("sdk/page-mod");
var data = require("sdk/self").data;
mod.PageMod({
  include: ['*'],
  contentScriptFile: data.url("myscript.js"),
  onAttach: function(worker) {
    worker.port.on('callCustomActions', function() {
      customActions();
    });
  }
});
myscript.js
中:

exportFunction(function() {
  self.port.emit('callCustomActions');
}, unsafeWindow, {defineAs: "callCustomActions"});
3) 在webdriver测试期间加载xpi,并调用全局函数
callCustomActions


关于这个过程有两个问题

1) 整个过程非常迂回。通过webdriver与firefox扩展对话有更好的做法吗

2) 我目前的解决方案效果不佳。如果我直接通过
cfx run
运行我的扩展(没有webdriver),它将按预期工作。然而,当通过webdriver运行时,sdk和chrome授权机构都不会做任何事情。 顺便说一下,我知道我的函数正在被调用,因为日志行“calling customActions.”和“called customActions.”都会打印


也许我需要设置一些firefox首选项,但尚未设置?

可能是您根本不需要该插件。Mozilla用于Firefox操作系统的测试自动化,包括:

木偶是Mozilla Gecko引擎的自动化驱动程序。它可以 远程控制Gecko的UI或内部JavaScript 平台,如Firefox或Firefox操作系统。它可以控制这两个方面 chrome(即菜单和功能)或内容(加载的网页 在浏览上下文中),提供高级别的控制和 能够复制用户操作。除了执行动作之外 在浏览器上,木偶还可以读取属性和属性 DOM的一部分

如果这听起来像Selenium/WebDriver,那么您是正确的! 提线木偶与其他木偶有着相同的气质和API Selenium/WebDriver,带有与Gecko交互的附加命令 chrome界面。它的目标是复制Selenium对web的功能 内容:使测试人员能够将命令发送到 远程控制用户代理


谢谢你的回答!然而,有没有让木偶和Webdriver一起工作的方法(在我阅读的时候看起来不是这样,只是检查一下)。我之所以需要它来使用webdriver,而不是像服务器/客户端这样的其他webdriver,是因为我需要的解决方案不仅适用于firefox,也适用于Chrome/mobile/其他平台,而且不可能为不同的浏览器启动不同的服务器。