使用Selenium进行浏览器插件测试

使用Selenium进行浏览器插件测试,selenium,cross-browser,browser-plugin,Selenium,Cross Browser,Browser Plugin,我正在写一个webapp,它有一个针对firefox和chrome的浏览器插件组件。我当前的测试系统使用通过Selenium IDE创建的一系列Selenium测试 是否可以让selenium为firefox和chrome(可能还有其他浏览器)安装、激活和删除浏览器插件 我认为最大的问题是安装/启用浏览器插件需要重新启动浏览器,我不确定这是否会通过关闭selenium来实现 通过访问检测浏览器的php脚本的内部站点链接,可以轻松获取插件。简短回答:否 安装浏览器扩展超出了Selenium的处理范

我正在写一个webapp,它有一个针对firefox和chrome的浏览器插件组件。我当前的测试系统使用通过Selenium IDE创建的一系列Selenium测试

是否可以让selenium为firefox和chrome(可能还有其他浏览器)安装、激活和删除浏览器插件

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

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

简短回答:否

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

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

Firefox也有类似的行为来提示扩展权限


您可以尝试驻留在浏览器之外的内容来执行您想要的操作。Sikuli可能会做到这一点。

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

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

File File=new文件(“extension.crx”);//也接受zip文件
ChromeOptions选项=新的ChromeOptions();
选项.addExtensions(文件);
//备选案文1:在当地。
WebDriver=新的ChromeDriver(选项);
//备选案文2:远程
DesiredCapabilities=DesiredCapabilities.chrome();
能力。设置能力(ChromeOptions.CAPABILITY,选项);
WebDriver=新的RemoteWebDriver(新的URL(“http://localhost:4444/wd/hub(能力),;
火狐
File File=new文件(“extension.xpi”);
FirefoxProfile FirefoxProfile=新的FirefoxProfile();
firefoxProfile.addExtension(文件);
//备选案文1:当地
WebDriver驱动程序=新的FirefoxDriver(firefoxProfile);
//备选案文2:远程
DesiredCapabilities=DesiredCapabilities.firefox();
能力.setCapability(FirefoxDriver.PROFILE,firefoxProfile);
WebDriver=新的RemoteWebDriver(新的URL(“http://localhost:4444/wd/hub(能力),;

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

  • 操作驾驶员:
  • 萨法里司机:
歌剧院 此API类似于FirefoxDriver

File File=new文件(“extension.oex”);//必须以“.oex”结尾
OperaProfile OperaProfile=新的OperaProfile();
operaProfile.addExtension(文件);
//备选案文1:当地
WebDriver驱动程序=新的OperaDriver(operaProfile);
//备选案文2:远程
DesiredCapabilities=DesiredCapabilities.opera();
能力.setCapability(“opera.profile”,operaProfile);
WebDriver=新的RemoteWebDriver(新的URL(“http://localhost:4444/wd/hub(能力),;
游猎 此API类似于ChromeDriver

File File=new文件(“extension.safariextz”);
SafariOptions=new SafariOptions();
选项.addExtensions(文件);
//备选案文1:在当地。
WebDriver=新的SafariDriver(选项);
//备选案文2:远程
DesiredCapabilities=DesiredCapabilities.safari();
能力。设置能力(SafariOptions.CAPABILITY,选项);
WebDriver=新的RemoteWebDriver(新的URL(“http://localhost:4444/wd/hub(能力),;
Internet Explorer
祝你好运。

你好,Rob,如果你也能回答如何使用Safari在Python中实现这一点,我将不胜感激。请看我的问题-Rob,你看到这个提交了吗?“SafariOptions中所有与扩展相关的方法都已被弃用,没有操作,将在下一个+1版本中删除。”,这是什么意思?@Uri不,我没有。谢谢你指出这一点。似乎您必须手动构建这个,正如我在之前的答案修订版中所示(它只适用于Safari 6-)。谢谢您,Rob。实际上,我们用Safari 7和8测试我们的扩展。如果Safari中有一种自动化的方法,是否有任何更新?您可以使用Selenium进行扩展测试。扩展是HTML、CSS和JS的组合。因此,您可以使用SeleniumYou处理这些问题。您可以使用var options=new chrome.options()在本地添加扩展;选项。附加扩展(“