Example #1
0
    def click(self):
        try:
            self.parakeet.retry(method=self.click_once)
        except Exception as ex:
            LOG.error('Attempts exceeded')

        return self
Example #2
0
    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
Example #3
0
    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