我是机器人框架的新手。我想知道如何在失败时捕获屏幕截图。 如果脚本失败,机器人框架是否会自动截取屏幕截图? 一个例子将是非常有帮助的!
答案 0 :(得分:5)
如果您正在进行基于Selenium的测试,这实际上是机器人需要的Selenium2Library的一个功能。
可在此处找到更多信息:http://robotframework.org/Selenium2Library/doc/Selenium2Library.html
正如它所说的文档,设置失败的屏幕截图非常容易,例如,这是我正在使用的测试套件中的:
SET NOCOUNT ON
declare @deps TABLE (name nvarchar(512), dep_name nvarchar(512))
declare @ordered TABLE (name nvarchar(512), [level] INT)
insert @deps(name, dep_name)
SELECT DISTINCT CAST(OBJ.name as nvarchar(512)) AS ObjectName,
CAST(REFOBJ.name as nvarchar(512)) AS ReferencedObjectName
FROM sys.sql_dependencies AS DEP
INNER JOIN
sys.objects AS OBJ
ON DEP.object_id = OBJ.object_id
INNER JOIN
sys.schemas AS SCH
ON OBJ.schema_id = SCH.schema_id
INNER JOIN sys.objects AS REFOBJ
ON DEP.referenced_major_id = REFOBJ.object_id
INNER JOIN sys.schemas AS REFSCH
ON REFOBJ.schema_id = REFSCH.schema_id
LEFT JOIN sys.columns AS REFCOL
ON DEP.class IN (0, 1)
AND DEP.referenced_minor_id = REFCOL.column_id
AND DEP.referenced_major_id = REFCOL.object_id
WHERE OBJ.type_desc IN ('VIEW','SQL_STORED_PROCEDURE','SQL_INLINE_TABLE_VALUED_FUNCTION','SQL_TRIGGER','SQL_SCALAR_FUNCTION')
AND REFOBJ.type_desc IN ('VIEW','SQL_STORED_PROCEDURE','SQL_INLINE_TABLE_VALUED_FUNCTION','SQL_TRIGGER','SQL_SCALAR_FUNCTION')
insert @ordered(name, [level])
select distinct d1.dep_name, 1 as [level]
from @deps d1
LEFT JOIN @deps d2 ON d1.dep_name = d2.name
where d2.name IS NULL
WHILE EXISTS(select * from @deps)
BEGIN
delete d
FROM @deps d
JOIN @ordered o ON d.name = o.name
insert @ordered(name, [level])
SELECT DISTINCT d0.name, (select MAX([level]) + 1 FROM @ordered)
FROM @deps d0
LEFT JOIN (
SELECT d.name
from @deps d
LEFT JOIN @ordered o ON d.dep_name = o.name
WHERE o.name IS NULL
) dfilter ON d0.name = dfilter.name
WHERE dfilter.name is NULL
END
select * from @ordered
ORDER by level asc
答案 1 :(得分:3)
您可以使用以下关键字在您想要的任何步骤之后捕捉屏幕截图:
Capture Page Screenshot
希望如此有用!
答案 2 :(得分:0)
在这种情况下,一旦执行/不执行测试用例就会执行拆解,如果测试用例失败,则会截取屏幕截图:
.id_str
如果你不需要不同的拆解特定测试,你可以在套件级别上做得更好:
[Teardown] Run Keyword If Test Failed Capture Page Screenshot
答案 3 :(得分:0)
到目前为止,所有其他答案都假设您使用的是Selenium
如果不是,则会有一个“屏幕截图”库,其中包含关键字“截屏”。要包含此库,您只需在设置表中添加“库截图”。
在我的机器人框架代码中,我的拆解只是引用了一个名为“Default Teardown”的关键字,定义为:
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>
您必须决定哪种屏幕分辨率最适合您,但我发现使用默认屏幕分辨率时,我的应用只占了一小部分。
长话短说,如果您使用硒,我认为您最好使用Capture Page Screenshot。但是,如果你不是,这可能是你最好的(或唯一的)解决方案。