Robotframework 重构测试用例以停止记录错误

Robotframework 重构测试用例以停止记录错误,robotframework,Robotframework,我有一个机器人框架关键字,如下所示: _Open Search Form If Not Open ${status} ${error} Run Keyword And Ignore Error Page Should Contain Element ${PATIENT SEARCH FORM} Run Keyword If '${status}'=='FAIL' Click Element ${PATIENT SEARCH BUTTON}

我有一个机器人框架关键字,如下所示:

_Open Search Form If Not Open
    ${status}    ${error}    Run Keyword And Ignore Error    Page Should Contain Element    ${PATIENT SEARCH FORM}
    Run Keyword If    '${status}'=='FAIL'    Click Element    ${PATIENT SEARCH BUTTON}
仅当
${PATIENT SEARCH FORM}
未打开时,才可以运行它。然而,每当pybot检测到
页面应该包含元素
为false时,它就会将此作为错误记录在测试日志中。使用此关键字的测试用例通过,您需要深入日志查看失败,但它仍然存在。不过,这并不意味着失败,我也不希望它被记录为失败

真正的痛苦是:我使用Selenium2Library进行测试,它的默认导入选项之一是
run\u on\u failure=Capture Page屏幕截图
。我喜欢这个功能,但是每当
页面应该包含元素时
失败并将“FAIL”消息写入测试日志,这个功能就会启动。然后,创建的屏幕截图将我的日志文件夹弄得乱七八糟,给人一种错误的印象,即测试失败了,而测试没有失败

我想要的是重构这个关键字以不记录故障,或者以某种方式禁用Selenium2Library的屏幕截图功能,只针对这个关键字。我使用
Run关键字和Ignore Error
试图让pybot忽略错误,而不是将其写入日志,但我一定是误解了这里“Ignore”的含义。问题的一部分是我使用的
页面应该包含元素
。我使用了一个verify关键字,但实际上,我是在问“页面是否包含此元素?”而不是验证它是否包含此元素。我在Selenium2Library中没有发现任何只返回页面元素状态而不尝试在其上进行断言的内容。但我实际上想做的是写一个条件语句

然后,创建的屏幕截图将我的日志文件夹弄得乱七八糟,给人一种错误的印象,即测试失败了,而测试没有失败

这是我的代码,只保存失败测试的屏幕截图

*** Settings *** Library Selenium2Library run_on_failure=Nothing Test Teardown Test Teardown *** Test Cases *** Simple test ${status} ${error} Run Keyword And Ignore Error Page Should Contain Element ${PATIENT SEARCH FORM} Run Keyword If '${status}'=='FAIL' Click Element ${PATIENT SEARCH BUTTON} Pass Execution *** Keywords *** Test Teardown Run Keyword If Test Failed Selenium2Library.Capture Page Screenshot ***背景*** Library Selenium2 Library运行时出错=无 测试拆卸测试拆卸 ***测试用例*** 简单测试 ${status}${error}运行关键字和忽略错误页面应包含元素${PATIENT SEARCH FORM} 如果“${status}”==“FAIL”单击元素${PATIENT SEARCH BUTTON},则运行关键字 通过执行 ***关键词*** 测试拆卸 如果测试失败,则运行关键字Selenium2库。捕获页面屏幕截图
我相信你所期望的是不可能的。即使测试通过,关键字仍将被记录并在log.html中显示为FAIL。要控制屏幕截图,可以使用@Dmitry Zverev solution。

以下是我的解决方案:

_Open Search Form If Not Open
    ${previous kw}=    Register Keyword To Run On Failure    None
    ${status}    ${error}    Run Keyword And Ignore Error    Page Should Contain Element ${PATIENT SEARCH FORM}
    Register Keyword To Run On Failure    ${previous kw}
    Run Keyword If    '${status}'=='FAIL'    Click Element    ${PATIENT SEARCH BUTTON}

我使用
Register关键字在出现故障时运行
临时禁用屏幕截图捕获。

+1用于在拆卸过程中处理捕获页面屏幕截图。您可能应该记住当前设置,然后在完成此代码后将其还原,而不是假设它设置为
捕获页面屏幕截图
您是对的。我会尝试找到一种方法来阅读,并更新我的答案。