无法使用 Selenium 安装 WebExtension
Unable to install WebExtension with Selenium
我正在尝试测试我的 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();
Error: ENOENT: no such file or directory, open '/dev/webext/build/firefox/install.rdf'
是否需要启用一个设置来告诉它这是一个网络扩展?
这是 FirefoxDriver 的问题。 SeleniumHQ/selenium#4184 和
mozilla/geckodriver#759
GeckoDriver says that
A workaround for the time being would be to use the add-on endpoints
geckodriver 0.17.0 provides to get an extension installed from the
local disk.
https://github.com/mozilla/geckodriver/blob/release/src/marionette.rs#L66
因此您必须使用 geckodriver 端点来执行此操作。我已经提到如何使用端点 here
Selenium v3.4.0 尚不支持 WebExtension API。 Profile::addExtension
方法仅适用于 install.rdf
存在于根目录中的遗留插件。
要测试 Web 扩展,您可以使用已安装该扩展的配置文件,或者您可以实施 GeckoDriver 自 v0.17.0 起可用的自定义命令:
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");
我正在尝试测试我的 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();
Error: ENOENT: no such file or directory, open '/dev/webext/build/firefox/install.rdf'
是否需要启用一个设置来告诉它这是一个网络扩展?
这是 FirefoxDriver 的问题。 SeleniumHQ/selenium#4184 和 mozilla/geckodriver#759
GeckoDriver says that
A workaround for the time being would be to use the add-on endpoints geckodriver 0.17.0 provides to get an extension installed from the local disk.
https://github.com/mozilla/geckodriver/blob/release/src/marionette.rs#L66
因此您必须使用 geckodriver 端点来执行此操作。我已经提到如何使用端点 here
Selenium v3.4.0 尚不支持 WebExtension API。 Profile::addExtension
方法仅适用于 install.rdf
存在于根目录中的遗留插件。
要测试 Web 扩展,您可以使用已安装该扩展的配置文件,或者您可以实施 GeckoDriver 自 v0.17.0 起可用的自定义命令:
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");