我正在尝试测试我的firefox webextension但是firefox拒绝安装它因为它没有install.rdf
文件。但webextensions不再使用该文件了。
const firefox = require('selenium-webdriver/firefox');
const webdriver = require('selenium-webdriver');
require('geckodriver');
let profile = new firefox.Profile();
profile.addExtension(process.cwd() + '/build/firefox/');
profile.setPreference('extensions.firebug.showChromeErrors', true);
let options = new firefox.Options().setProfile(profile);
let _driver = new webdriver.Builder()
.forBrowser('firefox')
.setFirefoxOptions(options)
.build();
错误:ENOENT:没有这样的文件或目录,打开'/dev/webext/build/firefox/install.rdf'
我需要设置一个设置来告诉它它是一个webextension吗?
答案 0 :(得分:4)
Selenium v3.4.0尚不支持WebExtension API。方法Profile::addExtension
仅适用于根目录中存在install.rdf
的旧版插件。
要测试Web扩展,您可以使用已安装扩展的配置文件,也可以实现自v0.17.0以来GeckoDriver可用的自定义命令:
var webdriver = require('selenium-webdriver');
var Command = require('selenium-webdriver/lib/command').Command;
function installWebExt(driver, extension) {
let cmd = new Command('moz-install-web-ext')
.setParameter('path', path.resolve(extension))
.setParameter('temporary', true);
driver.getExecutor()
.defineCommand(cmd.getName(), 'POST', '/session/:sessionId/moz/addon/install');
return driver.schedule(cmd, 'installWebExt(' + extension + ')');
}
var driver = new webdriver.Builder()
.forBrowser('firefox')
.build();
installWebExt(driver, "C:\\temp\\extension.zip");
答案 1 :(得分:1)
这是FirefoxDriver的一个问题。此问题已记录在SeleniumHQ/selenium#4184和mozilla/geckodriver#759中 says that
GeckoDriver https://github.com/mozilla/geckodriver/blob/release/src/marionette.rs#L66
暂时的解决方法是使用附加端点 geckodriver 0.17.0提供了从中安装的扩展 本地磁盘。
所以你必须使用geckodriver端点来做到这一点。我已经提到过如何使用端点example pattern to recognize and our process so far