【发布时间】:2019-03-28 00:07:28
【问题描述】:
我是机器人框架的新手。我想知道如何在失败时捕获屏幕截图。 如果脚本失败,机器人框架不会自动截屏吗? 举个例子会有很大帮助!
【问题讨论】:
-
我相信它会在失败时自动完成。不是这样吗?
标签: robotframework
我是机器人框架的新手。我想知道如何在失败时捕获屏幕截图。 如果脚本失败,机器人框架不会自动截屏吗? 举个例子会有很大帮助!
【问题讨论】:
标签: robotframework
这实际上是 Selenium2Library 的一项功能,如果您进行基于 Selenium 的测试,Robot 将需要此功能。
更多信息可以在这里找到:http://robotframework.org/Selenium2Library/doc/Selenium2Library.html
正如文档中所说,设置失败的屏幕截图非常容易,例如,这是我正在使用的测试套件中的截图:
Library Selenium2Library timeout=10 implicit_wait=1.5 run_on_failure=Capture Page Screenshot
【讨论】:
您可以使用以下关键字在您想要的任何步骤之后捕获屏幕截图:
Capture Page Screenshot
希望这对您有所帮助!
【讨论】:
在这种情况下,一旦测试用例执行/不执行,就会执行teardown,如果测试用例失败,则会截图:
[Teardown] Run Keyword If Test Failed Capture Page Screenshot
或者,如果您不需要针对特定测试进行不同的拆解,您可以在套件级别上做得更好:
[Test Teardown] Run Keyword If Test Failed Capture Page Screenshot
【讨论】:
到目前为止,所有其他答案都假设您使用的是 Selenium
如果您不是,则有一个“屏幕截图”库,其中包含关键字“截屏”。要包含此库,您只需将“库屏幕截图”放入设置表中即可。
在我的机器人框架代码中,我的拆解都只是引用了一个名为“默认拆解”的关键字,其定义为:
Default Teardown
Run Keyword If Test Failed Take Screenshot
Close All
(我认为 Close All 可能是我的自定义关键字之一)。
我注意到 Take Screenshot 关键字存在一些问题。其中一些可能是可配置的,但我不知道。首先,它会截取您的屏幕截图,而不仅仅是您感兴趣的应用程序。因此,如果您正在使用它并允许其他人查看生成的屏幕截图,请确保您没有任何内容屏幕上您不想分享的其他内容。
另外,如果您开始测试然后锁定屏幕以便在运行时稍作休息,那么您的所有屏幕截图都将只是锁定屏幕的图片。
我也在我的 Jenkins 服务器上使用它,它使用 xvfb-run 命令创建一种假 GUI 来运行机器人框架测试。如果您也这样做,请确保在您的 xvfb-run 命令中包含类似于
的内容xvfb-run --server-args="-screen 0 1024x768x24" <rest of your command>
您必须决定哪种屏幕分辨率最适合您,但我发现使用默认屏幕分辨率时,我的应用只捕获了一小部分。
长话短说,如果您使用 selenium,我认为最好使用 Capture Page Screenshot。但是,如果您不是,这可能是您最好(或唯一)的解决方案。
【讨论】: