Example #1
0
def my_input2(driver, a, res, inp):
    for pole in a:
        if res[pole] != None:
            if res[pole] != '':
                elem = p(d=driver, f='p', **inp[pole])
                #                elem.send_keys(' ')
                #                elem.clear()
                elem.send_keys(' ')
                #                elem.send_keys(res[pole])
                for iq in range(1, 200):
                    elem.send_keys(Keys.BACKSPACE)
                for fucked_char in res[pole]:
                    elem.send_keys(fucked_char)
                wj(driver)
                elem = p(d=driver, f='p', **inp['ЩелчокДляСброса'])
                wj(driver)
                elem.click()
                wj(driver)
Example #2
0
def my_input(driver, a, res, inp):
    for pole in a:
        if res[pole] != None:
            if res[pole] != '':
                elem = p(d=driver, f='c', **inp[pole])
                #            wj(driver)
                #            elem.click()
                #            wj(driver)
                #            elem.clear()
                wj(driver)
                if pole in [
                        'УлицаРАБ', 'УлицаРЕГ', 'УлицаФАКТ', 'НазвДолжности',
                        'НасПунктРАБ', 'НасПунктРЕГ', 'НасПунктФАКТ'
                ]:
                    res[pole] = s_minus(res[pole]).replace('.', ' ').replace(
                        ',', ' ').replace(';', ' ').replace('  ', ' ')
                if pole in [
                        'ДомРАБ', 'ДомРЕГ', 'ДомФАКТ', 'КорпусРАБ',
                        'КорпусРЕГ', 'КорпусФАКТ'
                ]:
                    res[pole] = res[pole].replace(' ', '')
                if pole in ['РегионРАБ', 'РегионРЕГ', 'РегионФАКТ']:
                    res[pole] = s_minus(res[pole]).replace('.', ' ').upper()
                    if res[pole].find('РЕСП') > -1:
                        if res[pole].find('УДМУРТСКАЯ') == -1:
                            res[pole] = 'РЕСП ' + res[pole].replace(
                                'РЕСП', '').strip()
                    elif res[pole].find('ОКРУГ') > -1 or res[pole].find('ОБЛ') > -1 or res[pole].find('КРАЙ') > -1 \
                                                      or res[pole].find('РАЙОН') > -1:
                        q = 0
                    elif res[pole].find('Г') > -1:
                        #                        if res[pole].find('МОСКВА') > -1:
                        #                            res[pole] = res[pole].replace('Г', '').strip()
                        #                        else:
                        res[pole] = 'Г. ' + res[pole].replace('Г', '').strip()
                for fucked_char in s(res[pole]):
                    elem.send_keys(fucked_char)

                wj(driver)
                elem = p(d=driver, f='p', **inp['ЩелчокДляСброса'])
                wj(driver)
                elem.click()
                wj(driver)
Example #3
0
    elem = p(d=driver, f='p', **inputtity['ФИО'])
    wj(driver)
    elem.send_keys('.')
    wj(driver)
    lang_check = p(d=driver, f='p', **inputtity['ФИОЗнач'])
    wj(driver)
    if lang_check == 'Ю':
        ActionChains(driver).key_down(Keys.LEFT_ALT).key_down(Keys.LEFT_SHIFT)\
                            .click(elem).key_up(Keys.LEFT_ALT).key_up(Keys.LEFT_SHIFT).perform()
    wj(driver)
    elem.send_keys(Keys.BACK_SPACE)
    wj(driver)
    """
    my_input(driver, ['ФИО', 'МобТелефон', 'Email', 'КредЛимит'], res_inp,
             inputtity)
    if p(d=driver, f='p', **clicktity['СоглашенКонфиденцСостояние']
         ) == 'ui-checkbox app-form-action-agreement':
        wj(driver)
        elem = p(d=driver, f='p', **clicktity['СоглашенКонфиденц'])
        wj(driver)
        elem.click()
        wj(driver)

    wj(driver)
    elem = p(d=driver, f='c', **clicktity['Далее'])
    wj(driver)
    elem.click()
    wj(driver)
    if not chk(d=driver, f='c', **clicktity['Шаг2']):
        error = p(d=driver, f='p', **clicktity['Ошибки'])
        wj(driver)
        continue
Example #4
0
    def use_order(self, order, ajson):
        fromSQL = ''
        if order.get('SQL'):  # "Разворачиваем" любой уровень вложенности json
            fromSQL = ajson
            for stepSQL in order['SQL']:
                fromSQL = fromSQL[stepSQL]
        # проверяем на наличие элемента, если нет - пропускаем цикл
        if order.get('check'):
            data4send = {'t': 'x', 's': order['check']}
            elem = p(d=self.driver, f='p', **data4send)
            wj(self.driver)
            if not elem:
                return
            if elem.get_attribute('value'):
                return
        # проверяем есть ли доставка курьером, если нет - исключение
        if order.get('check-delivery'):
            data4send = {'t': 'x', 's': order['check-delivery']}
            elem = p(d=self.driver, f='p', **data4send)
            wj(self.driver)
            if not elem:
                raise NoDeliveryException
        if order.get('check-absence'):
            data4send = {'t': 'x', 's': order['check-absence']}
            elem = p(d=self.driver, f='p', **data4send)
            wj(self.driver)
            if elem:
                return
        if order.get('pre-click'):
            data4send = {'t': 'x', 's': order['pre-click']}
            elem = p(d=self.driver, f='c', **data4send)
            wj(self.driver)
            elem.click()
        if order.get('check-has-menu'):
            data4send = {
                't': 'x',
                's': order['check-has-menu'] + str(fromSQL) + '")]/..'
            }
            elem = p(d=self.driver, f='p', **data4send)
            wj(self.driver)
            if not elem:
                raise NoDeliveryException
        # проверяем на наличие элемента, если нет - ждем пока не появится
        if order.get('check-until'):
            data4send = {'t': 'x', 's': order['check-until']}
            elem = p(d=self.driver, f='p', **data4send)
            wj(self.driver)
            while not elem:
                pass
        # проверяем заполненность поля input, если текст есть - пропускаем цикл
        if order.get('check-value'):
            data4send = {'t': 'x', 's': order['check-value']}
            elem = p(d=self.driver, f='p', **data4send)
            wj(self.driver)
            if elem.get_attribute('value'):
                return
        # проверяем наличие если текста нет - переходим  к следующему order (пропускаем цикл)
        if order.get('check-text'):
            wj(self.driver)
            current_html = self.driver.find_element_by_xpath(
                order['check-text']).get_attribute('innerHTML')
            current_reactid = str(
                int(current_html.split('data-reactid="')[1].split('"')[0]) - 1)
            wj(self.driver)
            data4send = {
                't': 'x',
                's': '//DIV[@data-reactid="' + current_reactid + '"]'
            }
            elem = p(d=self.driver, f='p', **data4send)
            wj(self.driver)
            if elem.get_attribute('class').find('part_hidden') > -1:
                return
        # проверяем на наличие элемента в списке, если ни одного нет - RequiredDocumentException
        if order.get('check-with-name'):
            elems = self.driver.find_elements_by_xpath(
                order['check-with-name'])
            wj(self.driver)
            has_name = False
            documents = ''
            for elem in elems:
                if elem.text and elem.text != 'Не могу предоставить':
                    documents += ', ' + elem.text
                    if fromSQL:
                        if elem.text.find(fromSQL) > -1:
                            has_name = True
            documents = documents.strip(',').strip()
            if fromSQL == None and len(elems):
                raise RequiredDocumentException
            if len(elems) and not has_name:
                raise RequiredDocumentException
        if order.get('pre-wait'):
            time.sleep(order['pre-wait'])
        if order.get('click'):
            data4send = {'t': 'x', 's': order['click']}
            elem = p(d=self.driver, f='c', **data4send)
            wj(self.driver)
            elem.click()
        if fromSQL and order.get('input'):
            data4send = {'t': 'x', 's': order['input']}
            elem = p(d=self.driver, f='p', **data4send)
            wj(self.driver)
            #                elem.send_keys(' ')
            #                elem.clear()
            elem.send_keys(fromSQL)
            wj(self.driver)
        if fromSQL and order.get('input-tel'):
            data4send = {'t': 'x', 's': order['input-tel']}
            elem = p(d=self.driver, f='p', **data4send)
            wj(self.driver)
            elem.send_keys(' ')
            elem.clear()
            elem.send_keys(' ')
            elem.send_keys(fromSQL[1:])
            wj(self.driver)
        if fromSQL and order.get('char-input'):
            data4send = {'t': 'x', 's': order['char-input']}
            elem = p(d=self.driver, f='c', **data4send)
            wj(self.driver)
            for char in s(fromSQL):
                elem.send_keys(char)
            wj(self.driver)
        if str(fromSQL) != 'None' and str(order.get('select')) != 'None':
            if len(order['select']) >= int(fromSQL):
                data4send = {'t': 'x', 's': order['select'][int(fromSQL)]}
                elem = p(d=self.driver, f='c', **data4send)
                wj(self.driver)
                elem.click()
        if fromSQL and order.get('click-text'):
            data4send = {
                't': 'x',
                's': order['click-text'] + str(fromSQL) + '"]'
            }
            elem = p(d=self.driver, f='c', **data4send)
            wj(self.driver)
            elem.click()
        if fromSQL and order.get('click-text-up'):
            data4send = {
                't': 'x',
                's': order['click-text-up'] + str(fromSQL) + '")]/..'
            }
            elem = p(d=self.driver, f='c', **data4send)
            wj(self.driver)
            elem.click()
        if l(fromSQL) == 1 and order.get('checkbox'):
            data4send = {'t': 'x', 's': order['checkbox']}
            elem = p(d=self.driver, f='c', **data4send)
            wj(self.driver)
            elem.click()
        #                        stamp = self.aid + '(' + str(self.pid) + ')' + datetime.now().strftime("%d-%H:%M:%S")
        #                        self.driver.save_screenshot(LOG_PATH + stamp + '.png')
        if fromSQL and order.get('radio-select'):
            sel = -1
            for j, select in enumerate(order['radio-select-input']):
                if fromSQL == select:
                    sel = j
            if sel > -1:
                data4send = {'t': 'x', 's': order['radio-select'][sel]}
                elem = p(d=self.driver, f='c', **data4send)
                wj(self.driver)
                elem.click()
        if order.get('pre-wait-post-click'):
            time.sleep(order['pre-wait-post-click'])
        if order.get('post-click'):
            data4send = {'t': 'x', 's': order['post-click']}
            elem = p(d=self.driver, f='c', **data4send)
            wj(self.driver)
            elem.click()
        if order.get('post-wait'):
            time.sleep(order['post-wait'])


#            import ipdb; ipdb.set_trace()
        if order.get('loaded'):
            post_status(self.post_url, self.aid, 1,
                        'передано ' + order['loaded'], self.log, self.bad_log)
Example #5
0
    def base(self):
        webconfig = read_config(filename='alfa.ini', section='web')
        fillconfig = read_config(filename='alfa.ini', section='fill')
        self.pid = os.getpid()
        post_api = read_config(filename='alfa.ini', section='postAPI')
        self.post_url = post_api['url']
        if DEBUG_JSON:
            with open(DEBUG_JSON) as f:
                inp = f.read()
        else:
            inp = sys.stdin.readline().rstrip()
        ajson = json.loads(inp)
        self.aid = ajson['click_id']
        if ajson['__landing_url']:
            self.driver.get(url=land2cc_short(ajson['__landing_url']) +
                            '&afclick=' + ajson['click_id'])
        else:
            raise RequiredPartnerLinkException
        loading = ajson['__command']['type'] == 'queue'
        complete_orderity = False
        cycles_orderity = 0
        formatting_error = ''
        tek_i = 0
        while (not complete_orderity
               ) and cycles_orderity <= CYCLES_ORDERITY and loading:
            documents = ''
            try:
                # Начинаем заполнять
                writelog(
                    self.log, self.aid,
                    'Начинаем заполнять по ссылке' + ajson['__landing_url'] +
                    '&afclick=' + ajson['click_id'] + str(ajson), self.pid)
                if not tek_i:
                    post_status(self.post_url, self.aid, 1,
                                'Начинаем выгрузку на сервер', self.log,
                                self.bad_log)
                for i in range(tek_i, len(orderity)):
                    order = orderity[i]
                    tek_i = i
                    # Проверяем stdin
                    ready, x, y = check_select([sys.stdin], [], [], 0)
                    if ready:
                        self.current_stdin = sys.stdin.readline().rstrip()
                    if self.current_stdin:
                        bjson = json.loads(self.current_stdin)
                        if bjson['__command']['type'] == 'kill':
                            self.current_stdin = ''
                            raise KillException
                    wj(self.driver)
                    # Проверяем на всякие неожиданности
                    current_html = self.driver.find_element_by_xpath(
                        '//HTML').get_attribute('innerHTML')
                    if current_html.find(
                            'Ваша заявка на кредитную карту устала ждать :)'
                    ) > -1:
                        raise ServerTimeOutException
                    if current_html.find('Ваши дальнейшие шаги') > -1:
                        writelog(
                            self.log, self.aid,
                            'Банк прервал транcфер заявки, чтобы уточнить некоторые данные '
                            'лично у Вас. Ожидайте звонка из Альфа-Банка',
                            self.pid)
                        post_status(
                            self.post_url, self.aid, 11,
                            'Банк прервал транcфер заявки, чтобы уточнить '
                            'некоторые данные лично у Вас. Ожидайте звонка из Альфа-Банка',
                            self.log, self.bad_log)
                        raise UspehException
                    elif current_html.find(
                            'вы можете подать заявку повторно через 30 дней'
                    ) > -1:
                        raise RejectException
                    if current_html.find('Хотите ускорить заполнение?') > -1:
                        elem = self.driver.find_element_by_xpath(
                            '//SPAN[@class="link__text"][text()="Продолжить заполнение"]'
                        )
                        wj(self.driver)
                        elem.click()
                    if current_html.find(
                            'Введите&nbsp;одноразовый пароль&nbsp;из&nbsp;SMS'
                    ) > -1:
                        complete_orderity = True
                        continue
                    self.use_order(order, ajson)
                complete_orderity = True
            except ServerTimeOutException:
                raise
            except RequiredPartnerLinkException:
                writelog(
                    self.log, self.aid,
                    'Необходимо указать партнерскую ссылку - обратитесть к Вашему куратору',
                    self.pid)
                post_status(
                    self.post_url, self.aid, 5,
                    'Необходимо указать партнерскую ссылку - обратитесть к '
                    'Вашему куратору', self.log, self.bad_log)
                raise
            except NoDeliveryException:
                writelog(
                    self.log, self.aid,
                    'Для Вашего города доставка курьером невозможна. После '
                    'поступления СМС от банка, пройдите по ссылке, указанной в нем и выберите удобное Вам место'
                    ' получения карты', self.pid)
                post_status(
                    self.post_url, self.aid, 11,
                    'Этого города нет в списке доставки курьером. Решение - '
                    'сказать клиенту: Для Вашего города доставка курьером '
                    'невозможна. Мы для Вас заполнили заявку. В течении часа Вам придет СМС со ссылкой на '
                    'заполненную заявку. Пройдите по ссылке, выберите удобное Вам место '
                    'получения карты и отправьте заявку в Альфа-Банк',
                    self.log, self.bad_log)
                raise
            except RequiredDocumentException:
                writelog(
                    self.log, self.aid,
                    'Для Вашего региона необходимо предоставить один из документов: '
                    + documents + '.\n Исправьте заявку и отправьте её заново',
                    self.pid)
                post_status(
                    self.post_url, self.aid, 11,
                    'Для Вашего региона необходимо предоставить один из '
                    'документов: ' + documents +
                    '.\n Исправьте заявку и отправьте её заново', self.log,
                    self.bad_log)
                raise
            except KillException:
                raise
            except UspehException:
                raise
            except RejectException:
                raise
            except Exception as e:
                time.sleep(1)
                current_html = self.driver.find_element_by_xpath(
                    '//HTML').get_attribute('innerHTML')
                if current_html.find(
                        'Ваша заявка на кредитную карту устала ждать :)') > -1:
                    raise ServerTimeOutException
                elif current_html.find('Ваши дальнейшие шаги') > -1:
                    writelog(
                        self.log, self.aid,
                        'Банк прервал транcфер заявки, чтобы уточнить некоторые данные '
                        'лично у Вас. Ожидайте звонка из Альфа-Банка',
                        self.pid)
                    post_status(
                        self.post_url, self.aid, 11,
                        'Банк прервал транcфер заявки, чтобы уточнить '
                        'некоторые данные лично у Вас. Ожидайте звонка из Альфа-Банка',
                        self.log, self.bad_log)
                    raise UspehException
                elif current_html.find(
                        'вы можете подать заявку повторно через 30 дней') > -1:
                    raise RejectException
                elif current_html.find('Хотите ускорить заполнение?') > -1:
                    elem = self.driver.find_element_by_xpath(
                        '//SPAN[@class="link__text"]'
                        '[text()="Продолжить заполнение"]')
                    wj(self.driver)
                    elem.click()
                else:
                    cycles_orderity += 1
                    data4send = {
                        't': 'x',
                        's':
                        '//SPAN[contains(@class,"input_invalid")]//SPAN[@class="input__sub"]/..',
                        'a': 'text'
                    }
                    input_errors = p(d=al.driver, f='ps', **data4send)
                    errors_nulled = []
                    data4send = {
                        't': 'x',
                        's':
                        '//SPAN[contains(@class,"textarea_invalid")]//SPAN[@class="textarea__sub"]/..',
                        'a': 'text'
                    }
                    other_errors = p(d=al.driver, f='ps', **data4send)
                    formatting_error = ''
                    if len(input_errors):
                        for i, input_error in enumerate(input_errors):
                            if input_error.strip(' ').strip('\n').strip(
                                    ' ').strip('\n').strip(' '):
                                errors_nulled.append(
                                    input_error.replace('\n', ': '))
                        formatting_error = 'Ошибки ввода:'
                        for i, input_error in enumerate(errors_nulled):
                            formatting_error += '\n' + str(
                                i + 1) + ') ' + input_error
                    errors_nulled = []
                    if len(input_errors):
                        for i, other_error in enumerate(other_errors):
                            if other_error.strip(' ').strip('\n').strip(
                                    ' ').strip('\n').strip(' '):
                                if other_error == 'Кем выдан\nПоле обязательно для заполнения':
                                    errors_nulled.append(
                                        'Возможно ошибка в Коде подразделения УФМС. '
                                        'Проверьте код подразделения и заполните поле "Кем выдан"'
                                    )
                                else:
                                    errors_nulled.append(
                                        other_error.replace('\n', ': '))
                        for i, other_error in enumerate(errors_nulled):
                            formatting_error += '\n' + str(
                                i + 1) + ') ' + other_error
                        formatting_error += '\n. Исправьте ошибки, сохраните и отправьте заявку заново'
                    nowtime = datetime.now()
                    stamp = self.aid + '(' + str(
                        self.pid) + ')' + nowtime.strftime("%d-%H:%M:%S")
                    if formatting_error:
                        writelog(self.bad_log, self.aid,
                                 orderity[tek_i]['alfa'] + formatting_error,
                                 self.pid, nowtime)
                        post_status(self.post_url, self.aid, 1,
                                    formatting_error, self.log, self.bad_log)
                        raise DecodedErrorException
                    else:
                        writelog(
                            self.bad_log, self.aid,
                            'Ошибка транспорта: Отправьте заявку заново.\n'
                            'информация для отладки:' +
                            orderity[tek_i]['alfa'] + '\n' + str(ajson) +
                            '\n * * * \n' + str(e), self.pid, nowtime)
                        html_log = open(LOG_PATH + stamp + '.html', 'w')
                        html_elem = self.driver.find_element_by_xpath('//HTML')
                        html_log.write(html_elem.get_attribute('innerHTML'))
                        html_log.close()
                        self.driver.save_screenshot(LOG_PATH + stamp + '.png')
                        writelog(
                            self.log, self.aid,
                            'Ошибка - см. лог ошибок, скриншот, файл html',
                            self.pid, nowtime)
                        raise TrasferErrorException
                    # Пока выключил повторную отправку ------------------------------------------
                    #self.driver.execute_script('window.open("' + ajson['__landing_url'] + '&afclick=' + ajson['click_id'] +
                    #                           '","_blank");')
                    #self.driver.switch_to.window(self.driver.window_handles[0])
                    #self.driver.close()
                    #self.driver.switch_to.window(self.driver.window_handles[0])
                    #tek_i = 0
                    #-----------------------------------------------------------------------------
        if complete_orderity:
            sms_start_time = datetime.now()
            server_timeout = False
            uspeh = False
            last_state = 0
            client_timeout = False
            time.sleep(1)
            while datetime.now() - sms_start_time < timedelta(
                    minutes=ALOADER_TIMEOUT
            ) and not server_timeout and not uspeh:
                while datetime.now() - sms_start_time < timedelta(minutes=ALOADER_TIMEOUT) and not self.current_stdin \
                        and not server_timeout and not uspeh:
                    time.sleep(1)
                    current_html = self.driver.find_element_by_xpath(
                        '//HTML').get_attribute('innerHTML')
                    if current_html.find('Неправильно введен код смс') > -1 or \
                            current_html.find('Некорректные данные.\n Пожалуйста, попробуйте ещё раз.') > -1:
                        if last_state != 1:
                            last_state = 1
                            post_status(self.post_url, self.aid, 5,
                                        'Неправильная СМС, введите заново',
                                        self.log, self.bad_log)
                    elif current_html.find(
                            'Вы превысили количество попыток. '
                            'Просьба повторить попытку через 15 минут') > -1:
                        writelog(
                            self.log, self.aid,
                            'Вы превысили количество возможных SMS за период, '
                            'отправьте заявку заново', self.pid)
                        post_status(
                            self.post_url, self.aid, 3,
                            'Вы превысили количество возможных SMS за период, '
                            'отправьте заявку заново через 15 минут', self.log,
                            self.bad_log)
                        raise DecodedErrorException
                    elif current_html.find(
                            'Ваша заявка на кредитную карту устала ждать :)'
                    ) > -1:
                        raise ServerTimeOutException
                    elif current_html.find(
                            'вы можете подать заявку повторно через 30 дней'
                    ) > -1:
                        raise RejectException
                    elif (current_html.find('Ваши следующие шаги') > -1) or (
                            current_html.find('Информация по заявке') > -1):
                        raise UspehException
                    elif (current_html.find(' сек<!-- /react-text --></p>') >
                          -1 or current_html.find('Запросить '
                                                  'повторно можно через 0') >
                          -1) and current_html.find(
                              '60 сек<!-- /react-text --></p>') == -1:
                        if last_state != 2:
                            last_state = 2
                            writelog(self.log, self.aid, 'Ждем СМС', self.pid)
                            post_status(self.post_url, self.aid, 2, 'Ждем СМС',
                                        self.log, self.bad_log)
                    elif (current_html.find('Запросить пароль повторно') > -1 or current_html.find('Превышено '
                            'количество попыток ввода пароля.\n Пожалуйста, запросите пароль повторно')) and \
                            current_html.find('60 сек<!-- /react-text --></p>') == -1:
                        if last_state != 3:
                            last_state = 3
                            writelog(self.log, self.aid, 'Ждем запроса на СМС',
                                     self.pid)
                            post_status(self.post_url, self.aid, 3,
                                        'Ждем запроса на СМС', self.log,
                                        self.bad_log)
                    else:
                        if last_state != 6:
                            last_state = 6
                            writelog(
                                self.log, self.aid,
                                'Непонятно чего ждем, похоже aloader сбился',
                                self.pid)
                            stamp = self.aid + '(' + str(
                                self.pid) + ')' + datetime.now().strftime(
                                    "%d-%H:%M:%S")
                            html_log = open(LOG_PATH + stamp + '.html', 'w')
                            html_elem = self.driver.find_element_by_xpath(
                                '//HTML')
                            html_log.write(
                                html_elem.get_attribute('innerHTML'))
                            html_log.close()
                            self.driver.save_screenshot(LOG_PATH + stamp +
                                                        '.png')
                            raise TrasferErrorException
                    ready, x, y = check_select([sys.stdin], [], [], 0)
                    if ready:
                        self.current_stdin = sys.stdin.readline().rstrip()
                if self.current_stdin:
                    bjson = json.loads(self.current_stdin)
                    if bjson['__command']['type'] == 'confirm':
                        try:
                            self.current_stdin = ''
                            writelog(self.log, self.aid,
                                     'Получено СМС: ' + str(bjson), self.pid)
                            data4send = {'t': 'x', 's': smsity['Ввести СМС']}
                            elem = p(d=self.driver, f='p', **data4send)
                            wj(self.driver)
                            for k in range(6):
                                elem.send_keys(Keys.BACKSPACE)
                                wj(self.driver)
                            elem.send_keys(bjson['__command']['value'])
                            wj(self.driver)
                            last_state = 0
                        except Exception as e:
                            writelog(
                                self.log, self.aid,
                                'Ошибка при отправлении СМС: ' + str(bjson),
                                self.pid)
                            #                    data4send = {'t': 'x', 's': '//DIV[@class="confirmation-modal__body"]'}
                            #                    sms_window = p(d=self.driver, f='p', **data4send)
                            #                    sms_window_htm = '\n-------- окошко запроса пароля --------\n' +\
                            #                                      sms_window.get_attribute('innerHTML')
                            sms_window_htm = ''
                            writelog(
                                self.bad_log, self.aid,
                                'Ошибка при отправлении СМС: ' + str(bjson) +
                                sms_window_htm, self.pid)
                            post_status(
                                self.post_url, self.aid, 5,
                                'Ошибка при отправлении СМС, повторите отправку '
                                'той же СМС', self.log, self.bad_log)
                    elif bjson['__command']['type'] == 'retry':
                        try:
                            self.current_stdin = ''
                            writelog(
                                self.log, self.aid,
                                'Получена заявка на запрос СМС: ' + str(bjson),
                                self.pid)
                            data4send = {
                                't': 'x',
                                's': smsity['Запросить пароль повторно']
                            }
                            elem = p(d=self.driver, f='c', **data4send)
                            wj(self.driver)
                            elem.click()
                            time.sleep(2)
                        except Exception as e:
                            writelog(
                                self.log, self.aid,
                                'Ошибка при запросе повторной СМС: ' +
                                str(bjson), self.pid)
                            #                    data4send = {'t': 'x', 's': '//DIV[@class="confirmation-modal__body"]'}
                            #                    sms_window = p(d=self.driver, f='p', **data4send)
                            #                    sms_window_htm = '\n-------- окошко запроса пароля --------\n' +\
                            #                                      sms_window.get_attribute('innerHTML')
                            sms_window_htm = ''
                            writelog(
                                self.bad_log, self.aid,
                                'Ошибка при запросе повторной СМС: ' +
                                str(bjson) + sms_window_htm, self.pid)
                            post_status(
                                self.post_url, self.aid, 5,
                                'Ошибка при запросе повторной СМС, повторите запрос',
                                self.log, self.bad_log)
                    elif bjson['__command']['type'] == 'kill':
                        self.current_stdin = ''
                        raise KillException

                if datetime.now() - sms_start_time > timedelta(
                        minutes=ALOADER_TIMEOUT):
                    raise ServerTimeOutException
        else:
            if loading:
                raise TrasferErrorException
            else:
                post_status(self.post_url, self.aid, 5,
                            'Ошибка, повторите отправку', self.log,
                            self.bad_log)
                writelog(self.log, self.aid, 'Вылетел с неизвестной ошибкой',
                         self.pid)
Example #6
0
        'Мы надеемся на сотрудничество в будущем: вы можете подать заявку повторно '
        'через 30 дней', al.log, al.bad_log)
except UspehException as e:
    writelog(al.log, al.aid, 'Заявка выгружена', al.pid)
    post_status(al.post_url, al.aid, 4, 'Заявка выгружена', al.log, al.bad_log)
except DecodedErrorException:  # Если уже все сообщения вывели
    pass
except Exception as e:
    writelog(al.log, al.aid, 'Вылетел с ошибкой: ' + str(e), al.pid)
    data4send = {
        't': 'x',
        's':
        '//SPAN[contains(@class,"input_invalid")]//SPAN[@class="input__sub"]/..',
        'a': 'text'
    }
    input_errors = p(d=al.driver, f='ps', **data4send)
    errors_nulled = []
    data4send = {
        't': 'x',
        's':
        '//SPAN[contains(@class,"textarea_invalid")]//SPAN[@class="textarea__sub"]/..',
        'a': 'text'
    }
    other_errors = p(d=al.driver, f='ps', **data4send)
    formatting_error = ''
    if len(input_errors):
        for i, input_error in enumerate(input_errors):
            if input_error.strip(' ').strip('\n').strip(' ').strip('\n').strip(
                    ' '):
                errors_nulled.append(input_error.replace('\n', ': '))
        formatting_error = 'Ошибки ввода:'