如何在 Web 浏览器中从 Silverlight 应用程序捕获图像

Posted

技术标签:

【中文标题】如何在 Web 浏览器中从 Silverlight 应用程序捕获图像【英文标题】:How Can I Capture Image From Silverlight Application Within Web Browser 【发布时间】:2016-05-04 17:59:18 【问题描述】:

我正在使用 Robot Framework 来自动化网站。该网站使用 Silverlight 应用程序来显示视频。

我的目标: 要在我的机器人框架中创建一个带有 web 元素的自定义关键字,web 元素是 Silverlight 播放器在页面上的位置,并截取可见内容的屏幕截图。我不需要与 Silverlight 应用程序交互。

工作已经完成: 我已经创建了一个自定义关键字Capture Screenshot Of Element,它接受一个网络元素并返回该特定元素的屏幕截图。 但是,如果元素包含 Silverlight 应用程序,我得到的只是空白背景色,而不是 Silverlight 应用程序上显示的图像。

有没有办法在浏览器中指定一个 web 元素并显示该元素在屏幕上实际看到的内容?

【问题讨论】:

尝试截屏整个屏幕/网络驱动程序,然后使用元素的坐标来裁剪图像 @AlastairMcCormack 当您说屏幕捕获整个屏幕时,您的意思是在 Robot Framework 中使用Capture Page Screenshot,然后使用坐标来裁剪图像?如果是这样,这就是我正在做的事情。 按照***.com/questions/8900073/webdriver-screenshot 致电driver.save_screenshot()。我不确定它是如何翻译的 Robot Framework :( @AlastairMcCormack 我已经在 Robot Framework 中做同样的事情。关键字是Capture Page Screenshot。作为比较,我已经尝试过编写该链接中提到的 Python Selenium 脚本。两种情况下的结果都是一样的; Silverlight 应用程序中的图像不显示。你得到的只是背景颜色的截图。 你用的是什么浏览器?您可以使用机器人框架打开页面吗?如果可以,您的视频是否会自动正常播放? 【参考方案1】:

虽然这是一个非常古老的问题,但我之前遇到过类似的问题,想在这里分享细节。

当您使用 selenium 库截屏时,它会调用 Web 驱动程序方法将整个页面内容转换为图像。但是对于 silverlight 组件,由于显而易见的原因,它无法捕获它。

解决方案是您需要获取当前屏幕图像而不是依赖浏览器。最简单的方法之一是使用 Robot Framework SikuliLibrary。它还具有Capture Region 关键字,可以拍摄屏幕特定部分的快照。我希望这足以满足您的要求。

【讨论】:

以上是关于如何在 Web 浏览器中从 Silverlight 应用程序捕获图像的主要内容,如果未能解决你的问题,请参考以下文章

silverlight 基本信息学习随笔

window2003 已经安装了silverlight 为啥还提示要安装

以编程方式使 Silverlight XAP 文件从浏览器缓存中过期

VS2010中Silverlight启动设置 outofbrowser

wpf和silverlight有啥不同

Microsoft Silverlight是啥程序?