mirror of
				https://github.com/dgtlmoon/changedetection.io.git
				synced 2025-10-30 22:27:52 +00:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			0.50.18
			...
			browserste
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 0eb5469b7c | 
| @@ -43,9 +43,11 @@ class JSActionExceptions(Exception): | ||||
|         return | ||||
|  | ||||
|  | ||||
| class BrowserStepsStepTimout(Exception): | ||||
|     def __init__(self, step_n): | ||||
| class BrowserStepsStepException(Exception): | ||||
|     def __init__(self, step_n, original_e): | ||||
|         self.step_n = step_n | ||||
|         self.original_e = original_e | ||||
|         print(f"Browser Steps exception at step {self.step_n}", str(original_e)) | ||||
|         return | ||||
|  | ||||
|  | ||||
| @@ -173,7 +175,7 @@ class Fetcher(): | ||||
|  | ||||
|     def iterate_browser_steps(self): | ||||
|         from changedetectionio.blueprint.browser_steps.browser_steps import steppable_browser_interface | ||||
|         from playwright._impl._errors import TimeoutError | ||||
|         from playwright._impl._errors import TimeoutError, Error | ||||
|         from jinja2 import Environment | ||||
|         jinja2_env = Environment(extensions=['jinja2_time.TimeExtension']) | ||||
|  | ||||
| @@ -203,10 +205,10 @@ class Fetcher(): | ||||
|                                                       optional_value=optional_value) | ||||
|                     self.screenshot_step(step_n) | ||||
|                     self.save_step_html(step_n) | ||||
|                 except TimeoutError as e: | ||||
|                     print(str(e)) | ||||
|  | ||||
|                 except (Error, TimeoutError) as e: | ||||
|                     # Stop processing here | ||||
|                     raise BrowserStepsStepTimout(step_n=step_n) | ||||
|                     raise BrowserStepsStepException(step_n=step_n, original_e=e) | ||||
|  | ||||
|     # It's always good to reset these | ||||
|     def delete_browser_steps_screenshots(self): | ||||
|   | ||||
| @@ -354,20 +354,32 @@ class update_worker(threading.Thread): | ||||
|                         changed_detected = False | ||||
|                         self.datastore.update_watch(uuid=uuid, update_obj={'last_error': False}) | ||||
|  | ||||
|                     except content_fetcher.BrowserStepsStepTimout as e: | ||||
|                     except content_fetcher.BrowserStepsStepException as e: | ||||
|  | ||||
|                         if not self.datastore.data['watching'].get(uuid): | ||||
|                             continue | ||||
|  | ||||
|                         error_step = e.step_n + 1 | ||||
|                         err_text = f"Warning, browser step at position {error_step} could not run, target not found, check the watch, add a delay if necessary, view Browser Steps to see screenshot at that step" | ||||
|                         from playwright._impl._errors import TimeoutError, Error | ||||
|  | ||||
|                         # Generally enough info for TimeoutError (couldnt locate the element after default seconds) | ||||
|                         err_text = f"Browser step at position {error_step} could not run, check the watch, add a delay if necessary, view Browser Steps to see screenshot at that step." | ||||
|  | ||||
|                         if e.original_e.name == "TimeoutError": | ||||
|                             # Just the first line is enough, the rest is the stack trace | ||||
|                             err_text += " Could not find the target." | ||||
|                         else: | ||||
|                             # Other Error, more info is good. | ||||
|                             err_text += " " + str(e.original_e).splitlines()[0] | ||||
|  | ||||
|                         print(f"BrowserSteps exception at step {error_step}", str(e.original_e)) | ||||
|  | ||||
|                         self.datastore.update_watch(uuid=uuid, | ||||
|                                                     update_obj={'last_error': err_text, | ||||
|                                                                 'browser_steps_last_error_step': error_step | ||||
|                                                                 } | ||||
|                                                     ) | ||||
|  | ||||
|  | ||||
|                         if self.datastore.data['watching'][uuid].get('filter_failure_notification_send', False): | ||||
|                             c = self.datastore.data['watching'][uuid].get('consecutive_filter_failures', 5) | ||||
|                             c += 1 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user