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

我正在编写一个web浏览器,它具有Firefox和Chrome的浏览器插件组件。 我目前的测试系统使用通过Selenium IDE创建的一系列Selenium测试。

是否有可能让selenium安装,激活和删除Firefox和Chrome浏览器插件(可能还有其他浏览器)?

我认为最大的担忧是安装/启用浏览器插件需要重启浏览器,我不确定是否会通过硒关闭。

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


答案是肯定的 ,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扩展的自动化安装,并且它们已经在上游合并:

  • OperaDriver:https://github.com/operasoftware/operadriver/pull/93
  • SafariDriver:https://github.com/SeleniumHQ/selenium/pull/87
  • 歌剧

    这个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浏览器

    祝你好运。


    简答:不

    安装浏览器扩展不在Selenium的处理范围之内。

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

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

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

    链接地址: http://www.djcxy.com/p/65329.html

    上一篇: Browser Plugin Testing With Selenium

    下一篇: Scroll Element into View with Selenium