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

11

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

我的目标: 在Robot Framework中创建一个自定义关键字,该关键字接受一个网页元素(即Silverlight播放器在页面上的位置),并截取可见区域的屏幕截图。我不需要与Silverlight应用程序交互。

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

是否有一种方法可以指定浏览器中的网页元素,并显示该元素上实际看到的内容?


1
尝试截取整个屏幕/网络驱动程序的屏幕截图,然后使用元素的坐标来裁剪图像。 - Alastair McCormack
@AlastairMcCormack 当您说捕获整个屏幕时,是否意味着在机器人框架中使用“Capture Page Screenshot”,然后使用坐标来裁剪图像?如果是这样,那么这已经是我正在做的事情。 - p_cos
按照 https://dev59.com/Bmox5IYBdhLWcg3w5IZv 的说法,调用 driver.save_screenshot()。但我不确定在机器人框架中如何翻译它 :( - Alastair McCormack
@AlastairMcCormack 我已经在Robot Framework中执行了相当于此操作的功能。关键字是Capture Page Screenshot。作为比较,我已经尝试过按照链接中提到的编写Python Selenium脚本。在这两种情况下结果都是一样的;Silverlight应用程序中的图像没有显示出来。你只能得到一个背景颜色的截图。 - p_cos
你使用的浏览器是什么? 你能否通过机器人框架打开页面?如果可以,你的视频是否自动播放正常? - Lefty G Balogh
您也可以尝试使用任何第三方服务来截取屏幕截图。 - Serhii Matvienko
1个回答

0

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接