| 162 | |
| 163 | |
| 164 | class DisplayHandler(object): |
| 165 | def OnConsoleMessage(self, browser, message, **_): |
| 166 | """Called to display a console message.""" |
| 167 | # This will intercept js errors, see comments in OnAfterCreated |
| 168 | if "error" in message.lower() or "uncaught" in message.lower(): |
| 169 | # Prevent infinite recurrence in case something went wrong |
| 170 | if "js_print is not defined" in message.lower(): |
| 171 | if hasattr(self, "js_print_is_not_defined"): |
| 172 | print("Python: OnConsoleMessage: " |
| 173 | "Intercepted Javascript error: "+message) |
| 174 | return |
| 175 | else: |
| 176 | self.js_print_is_not_defined = True |
| 177 | # Delay print by 0.5 sec, because js_print may not be |
| 178 | # available yet due to DOM not ready. |
| 179 | args = [browser, "Python", "OnConsoleMessage", |
| 180 | "(Delayed) Intercepted Javascript error: <i>{error}</i>" |
| 181 | .format(error=message)] |
| 182 | threading.Timer(0.5, js_print, args).start() |
| 183 | |
| 184 | |
| 185 | class External(object): |
no outgoing calls
no test coverage detected