|
1 | 1 | import asyncio
|
| 2 | +from robot.api.deco import not_keyword |
| 3 | +from robot.api import logger |
2 | 4 | from pyppeteer.browser import Browser
|
| 5 | +from robot.libraries.BuiltIn import BuiltIn |
| 6 | + |
3 | 7 | from PuppeteerLibrary.custom_elements.SPage import SPage
|
4 |
| -from robot.api.deco import not_keyword |
5 | 8 | from PuppeteerLibrary.base.robotlibcore import DynamicCore
|
6 | 9 | from PuppeteerLibrary.keywords import (
|
7 | 10 | AlertKeywords,
|
@@ -63,6 +66,8 @@ class PuppeteerLibrary(DynamicCore):
|
63 | 66 | async_libraries = []
|
64 | 67 |
|
65 | 68 | def __init__(self):
|
| 69 | + self.run_on_failure_keyword = 'Capture Page Screenshot' |
| 70 | + |
66 | 71 | libraries = [
|
67 | 72 | AlertKeywords(self),
|
68 | 73 | BrowserManagementKeywords(self),
|
@@ -104,3 +109,21 @@ def set_current_page(self, page) -> SPage:
|
104 | 109 | @not_keyword
|
105 | 110 | def get_browser(self) -> Browser:
|
106 | 111 | return self.browser
|
| 112 | + |
| 113 | + @not_keyword |
| 114 | + def run_keyword(self, name, args, kwargs): |
| 115 | + self._running_keyword = name |
| 116 | + try: |
| 117 | + return DynamicCore.run_keyword(self, name, args, kwargs) |
| 118 | + except Exception: |
| 119 | + self.failure_occurred() |
| 120 | + raise |
| 121 | + finally: |
| 122 | + self._running_keyword = None |
| 123 | + |
| 124 | + def failure_occurred(self): |
| 125 | + try: |
| 126 | + BuiltIn().run_keyword(self.run_on_failure_keyword) |
| 127 | + except Exception as err: |
| 128 | + logger.warn("Keyword '%s' could not be run on failure: %s" |
| 129 | + % (self.run_on_failure_keyword, err)) |
0 commit comments