通过webdriver控制firefox的最佳方式
我需要通过webdriver控制Firefox浏览器。注意,我并没有试图控制页面元素(即查找元素、单击、获取文本等);相反,我需要访问Firefox的分析器和强制gc(即,我需要Firefox的Chrome授权和sdk)。在上下文中,我正在创建一个微基准框架,而不是运行一个普通的webdriver测试 显然,原始webdriver无法工作,所以我一直在尝试 1) 创建一个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
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/其他平台,而且不可能为不同的浏览器启动不同的服务器。