def click(self): try: self.parakeet.retry(method=self.click_once) except Exception as ex: LOG.error('Attempts exceeded') return self
def retry(self, method=None, **kwargs): """ Method retry the execution :param method: :param kwargs: :return: """ _next = 'next_iterator' _retry = self.retry_get_element _next_iterator = kwargs.get(_next, 1) try: LOG.debug('Trying {}/{} to perform method {}'.format( _next_iterator, _retry, method.__name__)) kwargs.pop(_next, None) result = method(**kwargs) if isinstance(result, bool) and \ not result and \ _next_iterator < _retry: return self._perform_method(_next, _next_iterator, kwargs, method) return result except Exception as ex: LOG.error('Exception: {}'.format(ex.message)) if _next_iterator < _retry: return self._perform_method(_next, _next_iterator, kwargs, method) self.selenium.save_screenshot( 'parakeet_error_{:05d}_{}.png'.format(next_image(), method.__name__)) raise ex
def get_element_waiting_for_its_presence(self, locator, waiting_time=None): _waiting_time = waiting_time if waiting_time else self.waiting_time LOG.debug('get_element_waiting_for_its_presence({}, {}, {})'.format( locator, _waiting_time, self.poll_frequency)) element = None try: element = WebDriverWait( self.selenium, _waiting_time, self.poll_frequency).until( ec.presence_of_element_located(locator)) except TimeoutException: LOG.error("Time is up! {}s".format(_waiting_time)) self.selenium\ .save_screenshot('parakeet_timeout_error_{:05d}.png' .format(next_image())) return element