17

我正在编写一个 web 应用程序,它有一个适用于 Firefox 和 chrome 的浏览器插件组件。我当前的测试系统使用通过 Selenium IDE 创建的一系列 Selenium 测试。

是否也可以安装、激活和删除用于 Firefox 和 chrome 的浏览器插件(可能还有其他浏览器)?

我认为最大的问题是安装/启用浏览器插件需要重新启动浏览器,我不确定这是否会通过 selenium 关闭。

通过访问内部站点链接到检测您的浏览器的 php 脚本,可以轻松处理插件的获取。

4

2 回答 2

40

答案是肯定的,Selenium 2 支持(远程)安装浏览器扩展。

Chrome 和 Firefox WebDriver 支持远程安装扩展。以下是 Chrome 和 Firefox 的示例代码:

铬合金

File file = new File("extension.crx"); // zip files are also accepted
ChromeOptions options = new ChromeOptions();
options.addExtensions(file);

// Option 1: Locally.
WebDriver driver = new ChromeDriver(options);

// Option 2: Remotely
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capabilities);

火狐

File file = new File("extension.xpi");
FirefoxProfile firefoxProfile = new FirefoxProfile();
firefoxProfile.addExtension(file);

// Option 1: Locally
WebDriver driver = new FirefoxDriver(firefoxProfile);

// Option 2: Remotely
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability(FirefoxDriver.PROFILE, firefoxProfile);
WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capabilities);

我还实现了 Opera 和 Safari 扩展的自动安装,它们已在上游合并:

歌剧

此 API 类似于 FirefoxDriver。

File file = new File("extension.oex"); // Must end with ".oex"
OperaProfile operaProfile = new OperaProfile();
operaProfile.addExtension(file);

// Option 1: Locally
WebDriver driver = new OperaDriver(operaProfile);

// Option 2: Remotely
DesiredCapabilities capabilities = DesiredCapabilities.opera();
capabilities.setCapability("opera.profile", operaProfile);
WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capabilities);

苹果浏览器

此 API 类似于 ChromeDriver。

File file = new File("extension.safariextz");
SafariOptions options = new SafariOptions();
options.addExtensions(file);

// Option 1: Locally.
WebDriver driver = new SafariDriver(options);

// Option 2: Remotely
DesiredCapabilities capabilities = DesiredCapabilities.safari();
capabilities.setCapability(SafariOptions.CAPABILITY, options);
WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capabilities);

IE浏览器

祝你好运。

于 2013-06-14T21:56:32.610 回答
-3

简短的回答:没有

安装浏览器扩展超出了 Selenium 的处理范围。

在 Chrome 中,当您想要添加插件或应用程序时,它会显示一个无法使用 Selenium “单击”的模式窗口。Chrome 不需要重新启动。

Firefox 具有相同的行为来提示扩展权限。

你可以尝试一些驻留在浏览器之外的东西来做你想做的事。Sikuli 可能会成功。

于 2013-02-28T14:45:20.753 回答