[英]Capturing Screenshot on failure in custom test library
我目前正在使用ROBOT进行一些自动化测试,除非遇到问题。 使用SeleniumLibrary关键字在.robot文件中失败的所有内容均会按预期准确捕获屏幕截图。
不幸的是,我在SeleniumLibrary旁边有一些自定义库,我想做同样的事情,但事实并非如此。 因此,例如,如果我从CustomLibrary1调用了一个关键字,但执行self.selib.wait_until_page_contains("Hello")
失败,那么它将简单地通过测试而不会捕获屏幕截图。
到目前为止,我唯一能找到的解决方法是:
try
并使用 except: self.selib.capture_page_screenshot()
(不理想,因为我有数百个关键字)。
Run Keyword If Test Failed Capture Test Screenshot
,这也不理想,因为如果在.robot文件中运行SeleniumLibrary关键字时测试失败,则将捕获两个截图,并且我有一些混合数据驱动/关键字驱动的测试不要在测试之间以及仅在所有测试结束时调用测试拆卸。
有没有办法在自定义库中注册“ run_on_failure”功能?
即使您有数百个关键字, try
块也是做到这一点的最佳方法。
也许您可以这样管理它:
keywords = ['Hello', 'World'] # etc.
# Include the try block in a function.
def try_keyword(keyword):
try:
self.selib.wait_until_page_contains(keyword)
except:
self.selib.capture_page_screenshot()
# Eventually do_something_else()
# Pass a function as an argument
def try_function_and_keyword(function, keyword):
try:
function(keyword)
except:
self.selib.capture_page_screenshot()
# Eventually do_something_else()
for keyword in keywords:
try_keyword(keyword)
try_function_and_keyword(driver.find_element_by_id, keyword)
我认为可能的异常涉及您的脚本。
如果是这样,也许使用日志记录模块可能会有用。 或者,即使该站点可能涉及例外,您也可能需要请求或响应数据。 您可以看一下browsermob-proxy ,这是一个非常有用的模块。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.