Source code for errors

from typing import Any


[docs]class ErrorMixin: """The mixin for base exceptions. :param Any ctx: content variables. """ #: Type identification code. code: str #: Error message template. msg_template: str def __init__(self, **ctx: Any) -> None: self.__dict__ = ctx def __str__(self) -> str: return self.msg_template.format(**self.__dict__)
[docs]class Error(ErrorMixin, Exception): """Base-class for all exceptions raised by this plugin."""
[docs]class PathError(Error): """The base-class for all path-related exceptions. :param str path: path string. """ def __init__(self, path: str, **kwargs: Any) -> None: super(PathError, self).__init__(path=path)
[docs]class PathNotAExecutableError(PathError): code = "file.not_a_executable" msg_template = 'path "{path}" does not point to a executable file'
[docs]class LocatorError(Error): """The base-class for all locator-related exceptions. :param str path: locatore string. """ def __init__(self, locator: str, **kwargs: Any) -> None: super(LocatorError, self).__init__(locator=locator)
[docs]class LocatorNotAValidSelectorOrXPathError(LocatorError): code = "locator.not_a_valid_selector_or_xpath" msg_template = 'locator "{locator}" is not a valid selector or xpath string.'
[docs]class ElementError(Error): """The base-class for all element-related exceptions. :param str locator: element locator string. """ def __init__(self, locator: str, **kwargs: Any) -> None: super(ElementError, self).__init__(locator=locator, **kwargs)
[docs]class ElementNotExistError(ElementError): code = "element.not_exist" msg_template = 'Element "{locator}" not exist.'
[docs]class ElementTimeoutError(ElementError): code = "element.timeout" msg_template = ( 'Wait for element "{locator}" to {action} failed: timeout {timeout}ms exceeds.' ) def __init__(self, locator: str, timeout: int, action: str = "appear") -> None: super(ElementTimeoutError, self).__init__( locator=locator, timeout=timeout, action=action )