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

How Can I Capture Image From Silverlight Application Within Web Browser

提问人:p_cos 提问时间:1/28/2016 最后编辑:p_cos 更新时间:3/4/2020 访问量:557

问:

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

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

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

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

python silverlight selenium-webdriver robotframework

评论

1赞 Alastair McCormack 1/28/2016
尝试截屏整个屏幕/Web 驱动程序,然后使用元素的坐标将其裁剪为图像
0赞 p_cos 1/28/2016
@AlastairMcCormack 当你说截屏时,你的意思是在机器人框架中使用,然后使用坐标来裁剪图像吗?如果是这样,这已经是我正在做的事情了。Capture Page Screenshot
0赞 Alastair McCormack 1/28/2016
stackoverflow.com/questions/8900073/webdriver-screenshot 致电。我不确定这如何翻译它 机器人框架 :(driver.save_screenshot()
0赞 p_cos 1/28/2016
@AlastairMcCormack我已经在机器人框架中做了与此类似的操作。关键字是 。作为比较,我已经尝试编写该链接中提到的 Python Selenium 脚本。两种情况下的结果相同;不显示 Silverlight 应用程序中的图像。您得到的只是背景颜色的屏幕截图。Capture Page Screenshot
0赞 Lefty G Balogh 12/9/2019
您使用的是什么浏览器?您可以使用机器人框架打开页面吗?如果可以,您的视频是否能正常自动播放?

答:

0赞 Sariq Shaikh 3/4/2020 #1

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

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

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