如何使用 Java Selenium 启用 Silverlight 插件?

How do you enable Silverlight plugin using Java Selenium?

我正在 运行 在使用 Silverlight 的网站上 java 进行 selenium 测试:

一个测试例子是:

   public double getVideoBitrate()
   {
      return Double.valueOf(executeBridgeCommand("Diagnostics.CurrentBitrate").toString());
   }

我 运行 遇到的问题是,当 运行 在 Jenkins slave 上运行时,我无法保证 silverlight 处于活动状态,因此我的测试失败了。如何在浏览器中激活它? 这些命令(至少对于 Firefox)看起来就像我正在寻找的那样,但我不知道要设置什么首选项或如何为 silverlight 找到它们。

FirefoxProfile firefoxProfile = new FirefoxProfile();
firefoxProfile.setPreference("browser.download.folderList",2);
firefoxProfile.setPreference("pdfjs.disabled", true);
firefoxProfile.setPreference("pdfjs.firstRun", false);

(复制自 Selenium disable plugins in firefox profile)

我还需要确保 Silverlight 在 Chrome 和 IE 中也处于活动状态。

如果您只是验证 Silverlight 是否已启用,那么您应该可以这样做:

WebElement silverlightElement = driver.findElement(By.cssSelector("object[type='application/x-silverlight-2']");

然后用它做你想做的事。

但是,请注意,这是您可以使用 Selenium 做的事情。您可以验证 HTML 中显示的属性,但对象内部的任何内容都超出了 Selenium 的范围。 Selenium 无法自动化任何嵌入的内容,例如 PDF、Flash、Java Applets、Silverlight 等

有一个 silverlight selenium 插件可以获取视频速率等信息并进行其他操作。

嗯,由于 Microsoft 不再支持 Silverlight,我的公司转而使用 Flashplayer,所以这个问题现在没有实际意义。