Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def inner(self, *args, **kwargs):
timeout = kwargs.pop('timeout', self.wait_timeout)
if not self.wait(timeout=timeout):
raise UiObjectNotFoundError({
'code': -32002,
'message': E(self.selector.__str__())
})
return fn(self, *args, **kwargs)
def must_wait(self, exists=True, timeout=None):
""" wait and if not found raise UiObjectNotFoundError """
if not self.wait(exists, timeout):
raise UiObjectNotFoundError({'code': -32002, 'method': 'wait'})
@retry(UiObjectNotFoundError, delay=.5, tries=3, jitter=0.1, logger=logging) # yapf: disable
def info(self):
'''ui object info.'''
return self.jsonrpc.objInfo(self.selector)
def _inner(self, *args, **kwargs):
if not _fail_prompt_enabled:
return fn(self, *args, **kwargs)
from uiautomator2 import messagebox
try:
return fn(self, *args, **kwargs)
except UiObjectNotFoundError as e:
result = messagebox.retryskipabort(str(e), 30)
if result == 'retry':
return _inner(self, *args, **kwargs)
elif result == 'skip':
return True
else:
raise
return jsondata.get('result')
# error happends
err = JsonRpcError(error, method)
def is_exception(err, exception_name):
return err.exception_name == exception_name or exception_name in err.message
if isinstance(
err.data,
six.string_types) and 'UiAutomation not connected' in err.data:
err.__class__ = UiAutomationNotConnectedError
elif err.message:
if is_exception(err, 'uiautomator.UiObjectNotFoundException'):
err.__class__ = UiObjectNotFoundError
elif is_exception(err, 'android.support.test.uiautomator.StaleObjectException'):
# StaleObjectException
# https://developer.android.com/reference/android/support/test/uiautomator/StaleObjectException.html
# A StaleObjectException exception is thrown when a UiObject2 is used after the underlying View has been destroyed.
# In this case, it is necessary to call findObject(BySelector) to obtain a new UiObject2 instance.
err.__class__ = StaleObjectExceptionError
elif is_exception(err, 'java.lang.NullObjectException'):
err.__class__ = NullObjectExceptionError
elif is_exception(err, 'java.lang.NullPointerException'):
err.__class__ = NullPointerExceptionError
raise err