コード例 #1
0
ファイル: class_search.py プロジェクト: Maksim1988/test
 def good_state_pagination(self, driver, count, db_link, goods_on_page=40, e_msg=''):
     """
     Проверка что товары только в статусе accepted, belived
     :param driver:
     :param count:
     :param goods_on_page:
     :param e_msg:
     :return:
     """
     current_page = 1
     all_pages = int(math.ceil(int(count) / (goods_on_page + 0.0)))
     remaining_pages = all_pages - current_page
     count_on_pages = 0
     obj_s = ''
     while remaining_pages >= 0:
         str_ids = self.get_good_ids(driver)
         self.assertNotEqual(obj_s, str_ids, "Переход на след. страницу не произошел, товары совпадают")
         goods = db_link.warehouse.get_wares_by_id_and_moderation_state(str_ids, '1,2')
         next_page = current_page + 1
         if remaining_pages != 0:
             self.assertEqual(goods_on_page, len(goods), e_msg)
             Navigate.element_click(driver, Navigate.click_search.PAG_PAGE % next_page)
         else:
             self.assertEqual(count-count_on_pages, len(goods), e_msg)
         count_on_pages += len(goods)
         obj_s = str_ids
         current_page += 1
         remaining_pages -= 1
     self.assertEqual(count, count_on_pages, e_msg)
コード例 #2
0
ファイル: class_search.py プロジェクト: Maksim1988/test
 def user_state_pagination(self, driver, count, db_link, users_on_page=40, e_msg=''):
     """
     Проверка что пользователи только активные продавцы
     :param driver:
     :param count:
     :param goods_on_page:
     :param e_msg:
     :return:
     """
     current_page = 1
     all_pages = int(math.ceil(int(count) / (users_on_page + 0.0)))
     remaining_pages = all_pages - current_page
     count_on_pages = 0
     obj_s = ''
     while remaining_pages >= 0:
         str_ids = self.get_user_ids(driver)
         self.assertNotEqual(obj_s, str_ids, "Переход на след. страницу не произошел, пользователи совпадают")
         users = db_link.accounting.get_users_by_id_and_permissions(str_ids, '2,6', '3,4,7,8')
         next_page = current_page + 1
         if remaining_pages != 0:
             self.assertEqual(users_on_page, len(users), e_msg)
             Navigate.element_click(driver, Navigate.click_search.PAG_PAGE % next_page)
         else:
             self.assertEqual(count-count_on_pages, len(users), e_msg)
         count_on_pages += len(users)
         obj_s = str_ids
         current_page += 1
         remaining_pages -= 1
     self.assertEqual(count, count_on_pages, e_msg)
コード例 #3
0
ファイル: test_authorization.py プロジェクト: Maksim1988/test
    def test_authorization_by_phone_correct(self, type_password="******"):
        """
        Title: Я могу войти в систему введя корректный телефон и пароль
        Description:
        Проверка:
            * Наличие профиля пользователя
            * Имя в профиле совпадает с именем пользователя
            * Аватар пользователя совпадает с аватаром пользователя
            * Номер телефона совпадает с номером телефона пользователя
        """
        service_log.run(self)
        # Устанавливаем новый пароль для пользователя
        default_new_passwd = AccountingMethods.get_default_password()
        hash_res_new = generate_sha256(default_new_passwd, self.user["salt"])
        databases.db1.accounting.update_user_password(self.user["id"], hash_res_new)

        # Переходим на страницу авторизации
        self.go_authorization_page(self.driver)

        # Проверка страница авторизации
        self.check_page_authorization(self.driver)

        obj_phone, obj_password, obj_submit_button = self.get_data_authorization(self.driver)
        changed_passwd = self.get_password(type_passwd=type_password, source_passwd=default_new_passwd)
        changed_phone = self.get_phone(type_phone=self.type_phone, source_phone=self.user["phone"])

        # Вводим данные на авторизацию
        self.send_password(password_object=obj_password, password_number=changed_passwd)
        self.send_phone(phone_object=obj_phone, phone_number=changed_phone)

        # Нажатие на кнопку авторизации
        Navigate.element_click(self.driver, obj_submit_button, change_page_url=True)

        # Проверка виджета профиля
        self.user_profile_menu(self.driver, self.user)
コード例 #4
0
ファイル: class_search.py プロジェクト: Maksim1988/test
 def pagination(self, driver, count, section_xpath, items_in_page=40, e_msg=''):
     """
     Проверка пагинации
     :param driver:
     :param count:
     :param section_xpath:
     :param e_msg:
     :return:
     """
     current_page = 1
     all_pages = int(math.ceil(int(count) / (items_in_page + 0.0)))
     remaining_pages = all_pages - current_page
     if remaining_pages == 0:
         Navigate.element_is_none(driver, Navigate.click_search.PAG_PAGE % current_page)
         obj_on_page = Navigate.elements_is_present(driver, section_xpath)
         on_page = len(obj_on_page)
         self.assertEqual(count, on_page, e_msg)
     elif remaining_pages >= 1:
         count_on_pages = 0
         while remaining_pages >= 0:
             obj_on_page = Navigate.elements_is_present(driver, section_xpath)
             on_page = len(obj_on_page)
             next_page = current_page + 1
             if remaining_pages != 0:
                 self.assertEqual(items_in_page, on_page, e_msg)
                 Navigate.element_click(driver, Navigate.click_search.PAG_PAGE % next_page)
             else:
                 self.assertEqual(count-count_on_pages, on_page, e_msg)
             count_on_pages += on_page
             current_page += 1
             remaining_pages -= 1
         self.assertEqual(count, count_on_pages, e_msg)
     else:
         self.assertGreaterEqual(remaining_pages, 0, "Кол-во оставшихся страниц [%s] отрицательно" % remaining_pages)
コード例 #5
0
ファイル: class_front.py プロジェクト: Maksim1988/test
    def go_main(driver, phone=None, email=None, passwd=None, flag_auth=True, flag_api=True):
        """ Универсальный переход на главную страницу.
        :param driver: ссылка на драйвер
        :param phone: номер телефона
        :param email: электронная почта
        :param passwd: пароль
        :param flag_auth: флаг авторизации
        """
        from support.utils.variables import EVariable
        env_base_url = EVariable.front_base.url.strip()

        # авторизоваться через API
        if flag_auth:
            service_log.put("To authorization via API")
            if flag_api:
                if email is None and phone is not None:
                    HelpAuthMethods.set_authorization_by_phone(driver, phone, passwd)
                elif email is not None and phone is None:
                    # TODO
                    pass
                else:
                    msg_error = "Not correct params."
                    service_log.error(msg_error)
                    assert AssertionError(msg_error)
            else:
                if email is None and phone is not None:
                    HelpNavigateCheckMethods.get_page(driver, HelpNavigateCheckMethods.path_auth.PATH_AUTH)
                    obj_phone, obj_password, obj_submit_button = HelpAuthCheckMethods.get_data_authorization(driver)

                    # Вводим данные на авторизацию
                    l = lambda e, p:e if p is None else p
                    HelpAuthCheckMethods.send_phone(phone_object=obj_phone, phone_number=l(email, phone))
                    HelpAuthCheckMethods.send_password(password_object=obj_password, password_number=passwd)
                    # Нажатие на кнопку авторизации
                    HelpNavigateCheckMethods.element_click(driver, obj_submit_button, change_page_url=True)
                    time.sleep(HelpNavigateCheckMethods.time_sleep)
                elif email is not None and phone is None:
                    # TODO
                    pass
                else:
                    msg_error = "Not correct params."
                    service_log.error(msg_error)
                    assert AssertionError(msg_error)
            service_log.put("To authorization via API - success.")

        service_log.put("Get page: %s" % env_base_url)
        do_get_work = time.time()
        driver.get(env_base_url)
        work_get_time = HelpNavigateCheckMethods.work_time(do_get_work)
        service_log.put("Onload event time: [%s]" % work_get_time)
        HelpNavigateCheckMethods.progress(driver)
        work_load_time = HelpNavigateCheckMethods.work_time(do_get_work)
        service_log.put("Page received: %s" % env_base_url)
        service_log.put("Page received time: %s" % work_load_time)
        time.sleep(3)
コード例 #6
0
ファイル: class_front.py プロジェクト: Maksim1988/test
 def do_login(driver, sleep=2):
     """ Авторизоваться нажав на кнопку с текущей страницы.
     :param driver: ссылка на драйвер
     :param sleep: ожидание
     """
     # time.sleep(sleep)
     reg_log_btn = HelpNavigateCheckMethods.get_element_navigate(driver, HelpAuthData.click_main.BUTTON_REG_AN_LOGIN)
     HelpAuthCheckMethods.click_button(reg_log_btn)
     login_button = HelpNavigateCheckMethods.get_element_navigate(driver, HelpAuthData.click_main.BUTTON_LOGIN)
     login_button.is_displayed()
     login_button.is_enabled()
     HelpNavigateCheckMethods.element_click(driver, login_button)
コード例 #7
0
 def reading_unread_messages_after_reg(driver, new_messages):
     """
     Прочитать(протыкать) все непрочитанные сообщения(диалоги с пользователями)
     :param driver:
     :return:
     """
     dialogs = Navigate.elements_is_present(driver, Navigate.click_chat.ALL_UNREAD_MESSAGES)
     for dialog in dialogs:
         body_msg = Navigate.element_is_present(driver, Navigate.check_chat.LAST_MSG)
         Navigate.element_is_present(driver, Navigate.check_main.COUNT_NEW_MSG % (new_messages-1), wait=20)
         Navigate.element_click(driver, dialog, change_page_url=True)
         body_msg_new = Navigate.get_element_navigate(driver, Navigate.check_chat.LAST_MSG)
         assert body_msg != body_msg_new, "Тело нового диалога не появилось, переход на новый диалог не произошел"
     msg = Navigate.get_element_navigate(driver, Navigate.check_main.ABSTRACT_MSG)
     msg = msg.text.encode('utf-8')
     return msg
コード例 #8
0
ファイル: class_search.py プロジェクト: Maksim1988/test
 def search_by_no_good(self, driver, good, count_goods, e_msg=''):
     """
     Метод проверяет отсутствие товара в результатах поиска с использованием пагинации
     :param driver:
     :param good:
     """
     fail = False
     page = 1
     all_pages = int(math.ceil(int(count_goods) / 40.0))
     while all_pages >= 1:
         try:
             self.good_card_short(driver, good)
             fail = True
             break
         except Exception:
             all_pages -= 1
             if all_pages >= 1:
                 page += 1
                 Navigate.element_click(driver, Navigate.click_search.PAG_PAGE % page)
     self.assertFalse(fail, e_msg)
コード例 #9
0
 def user_profile_menu(self, driver, user):
     """
     Проверка выпадающего меню пользователя в хедере
     :param driver:
     :param user:
     :return:
     """
     if (user['gender'] == 'MALE' or user['gender'] is None) and user['avatar_id'] is None:
         avatar_id = self.NO_AVA_MALE
     elif user['gender'] == 'FEMALE' and user['avatar_id'] is None:
         avatar_id = self.NO_AVA_FEMALE
     else:
         avatar_id = user['avatar_id']
     Navigate.element_click(driver, Navigate.click_main.MENU_PROFILE_NAME % user['display_name'], change_page_url=False)
     Navigate.element_is_present(driver, Navigate.click_main.MENU_PROFILE_AVATAR % avatar_id)
     Navigate.element_is_present(driver, Navigate.click_main.MENU_PROFILE_MY_STORE)
     Navigate.element_is_present(driver, Navigate.click_main.MENU_PROFILE_FAVORITES)
     Navigate.element_is_present(driver, Navigate.click_main.MENU_PROFILE_CONTACTS)
     Navigate.element_is_present(driver, Navigate.click_main.MENU_PROFILE_SETTINGS)
     Navigate.element_is_present(driver, Navigate.click_main.MENU_PROFILE_EXIT)
コード例 #10
0
ファイル: class_front.py プロジェクト: Maksim1988/test
 def go_authorization_page(driver, env_base_url=MainClass.ENV_BASE_URL, sleep=2):
     """ Авторизоваться через главную страницу.
     :param driver: ссылка на драйвер
     :param env_base_url: адрес главной страницы
     :param sleep: ожидание пока страница прогрузиться
     """
     service_log.put("Get page: %s" % env_base_url)
     do_get_work = time.time()
     driver.get(env_base_url)
     work_get_time = HelpNavigateCheckMethods.work_time(do_get_work)
     service_log.put("Onload event time: [%s]" % work_get_time)
     HelpNavigateCheckMethods.progress(driver)
     work_load_time = HelpNavigateCheckMethods.work_time(do_get_work)
     service_log.put("Page received: %s" % env_base_url)
     service_log.put("Page received time: %s" % work_load_time)
     reg_log_btn = HelpNavigateCheckMethods.get_element_navigate(driver, HelpAuthData.click_main.BUTTON_REG_AN_LOGIN)
     HelpAuthCheckMethods.click_button(reg_log_btn)
     login_button = HelpNavigateCheckMethods.get_element_navigate(driver, HelpAuthData.click_main.BUTTON_LOGIN, mode=None)
     login_button.is_displayed()
     login_button.is_enabled()
     HelpNavigateCheckMethods.element_click(driver, login_button)
コード例 #11
0
ファイル: class_search.py プロジェクト: Maksim1988/test
 def search_by_no_user(self, driver, user, count_users, e_msg=''):
     """
     Метод проверяет отсутствие пользователя в результатах поиска с использованием пагинации
     :param driver:
     :param user:
     """
     fail = False
     page = 1
     all_pages = int(math.ceil(int(count_users) / 40.0))
     while all_pages >= 1:
         try:
             Navigate.element_is_present(driver, Navigate.click_search.LINK_SELLER_AVATAR % user["id"], wait=2)
             Navigate.element_is_present(driver, Navigate.click_search.SELLER_NAME_WITH_ID % (user['id'],
                                                                                              user["display_name"])
                                         )
             fail = True
             break
         except Exception:
             all_pages -= 1
             if all_pages >= 1:
                 page += 1
                 Navigate.element_click(driver, Navigate.click_search.PAG_PAGE % page)
     self.assertFalse(fail, e_msg)
コード例 #12
0
ファイル: static_smoke.py プロジェクト: Maksim1988/test
    def test_authorization_by_phone(self, name_user='******'):
        """
        Title: Авторизация пользователя по номеру телефона со статичными данными.
        """
        user = users[name_user]
        service_log.run(self)
        # Переходим на страницу авторизации
        self.go_authorization_page(self.driver)
        #self.click_to_phone(self.driver)

        # Проверка страница авторизации
        self.check_page_authorization(self.driver)

        # Вводим данные на авторизацию
        obj_phone, obj_password, obj_submit_button = self.get_data_authorization(self.driver)
        self.send_phone(phone_object=obj_phone, phone_number=user["phone"])
        self.send_password(password_object=obj_password, password_number=user["passwd"])

        # Нажатие на кнопку авторизации
        HelpNavigateCheckMethods.element_click(self.driver, obj_submit_button, change_page_url=True)

        # Проверка виджета профиля
        self.check_menu_profile_widget_total(self.driver, user["name"])
コード例 #13
0
ファイル: test_restore.py プロジェクト: Maksim1988/test
    def test_restorePassword_by_phone_correct(self):
        """
        Title: Я могу восстановить пароль, введя свой номер телефона, на который зарегистрирован аккаунт
        Description:
        1. Ввести корректный зарегистрированный номер моб. телефона в нажать "Выслать пароль"
            * отображается уведомление об отправке пароля на моб. телефон по смс
            * поле "Моб. телефон" становится недоступнынм для редактирования
            * пропадает кнопка "Выслать пароль"
            * появляется кнопка "Войти"
            * есть текст "Пароль отправлен на указанный номер. Введите его в течение 5 минут"
            * есть кнопка "Не приходит пароль?"
            * в БД для пользователя записывается новый пароль, состоящий из 5и чисел (хеш пароля).
            Он отличается от изначального.
            * на введенный моб. телефон приходит сгенерированный пароль, состоящий из 5и чисел.
            Он отличается от изначального.
            * статус пользователя и другие данные (кроме пароля) не меняется
        2. Ввести полученный пароль и нажать "Войти":
            * Происходит успешный вход в систему под учетной записью, для которой восстанавливали пароль.
            * Проверить что под ней можно снова войти после логаута из системы
        """
        service_log.run(self)
        self.go_authorization_page(self.driver)
        self.go_restore_page(self.driver)
        self.click_to_phone(self.driver)

        phone, sent_passwd_button = self.get_data_restore(self.driver)

        user = databases.db1.accounting.get_for_restore()[0]
        AccountingMethods.save_user_password(user_id=user["id"], hash_passwd=user["code_value"], salt=user["salt"])

        # вводим номер телефона
        phone.send_keys(user["phone"][1:])
        self.click_button(sent_passwd_button)
        self.check_password_is_sent(self.driver)

        pass_input = self.get_pass_input(self.driver)
        submit_button = self.get_login(self.driver)

        self.check_form_sent_passwd(self.get_form_note(self.driver))
        data = databases.db1.accounting.get_sms(phone=user["phone"])[0]
        self.check_sms_status(data)
        user_new_info = databases.db1.accounting.get_data_accounts_by_user_id_and_status(user["id"])[0]

        msg_error1 = "ОШИБКА: Хеши паролей совпадают. Пароль не изменился"
        self.assertNotEqual(user["code_value"], user_new_info["code_value"], msg_error1)

        # сравниваем хеш нового и старого пароля
        msg_error2 = "ОШИБКА: Соль паролей совпадает. Пароль не изменился"
        self.assertNotEqual(user["salt"], user_new_info["salt"], msg_error2)

        # сравниваем соль нового и старого пароля
        newPass = data["message"][-5:]

        new_pass_hash = generate_sha256(newPass, user_new_info["salt"])

        msg_error3 = "ОШИБКА: Новый хеш пароля из базы не совпадает с сгенерированным хешом. " \
                     "Возможно из логов получен неверный пароль."

        self.assertEqual(user_new_info["code_value"], new_pass_hash, msg_error3)

        pass_input.send_keys(newPass)

        Navigate.element_click(self.driver, submit_button, change_page_url=True)
        self.set_text_xpath_by_menu(user["display_name"])
コード例 #14
0
ファイル: class_user_card.py プロジェクト: Maksim1988/test
 def search_user(driver, user, sleep=2):
     Navigate.element_is_present(driver, Navigate.input_main.SEARCH).send_keys(user.decode('utf-8'))
     Navigate.element_click(driver, Navigate.click_main.BTN_SEARCH)
     time.sleep(sleep)
     Navigate.element_click(driver, Navigate.click_search.USER_MENU)
     time.sleep(sleep)
コード例 #15
0
    def test_registration_by_phone_correct(self):
        """
        Title: Я могу зарегистрироваться по номеру телефона
        Description:
        1. Заполнить первый этап регистрации, указав имя и корректный мобильный номер и нажав "Выслать пароль"
            * кнопка "Выслать пароль" исчезает со страницы
            * выбор способа регистрации (по email \  телефону) исчезает
            * поле "Моб. телефон" и "Имя Пользователя" становится недоступнынм для редактирования
            * появляется поле "Пароль"
            * появляется кнопка "Зарегистрироваться"
            * появляется кнопка "Не приходит пароль"
            * отображается текст "Пароль отправлен на указанный номер. Введите его в течение 5 минут"
            * на введенный моб. телефон приходит сгенерированный пароль, состоящий из 5и чисел. Проверить,
            что в базу так же записан хеш пароля.
            * в базу сохранен новый пользователь. Статус пользователя: "Ждет активации"
        3. Нажать кнопку "Зарегистрироваться"
            * Произошел вход в систему под созданной учетной записью, в  профиле (справа-сверху) корректно отображается
            имя пользователя в соответствии с созданным
            * на странице настроек профиля  корректно отображается информация в соответствии с введеным при регистрации
            * В БД проверить, что создалась запись с заполненными в соответствии с созданным полями и проверить что
            данная запись имеет правильную роль
            * Проверить наличие иконки двух сообщений в мессенджере.
        """
        service_log.run(self)
        type_user_name = 'VALID'
        telephone = str(random.randrange(1000000000, 7007777777, 1))

        # Переходим на страницу авторизации и далее на страницу регистрации
        self.go_authorization_page(self.driver)
        self.go_registration_page(self.driver)
        self.click_to_phone(self.driver)

        obj_phone, obj_username, obj_submit_button = self.get_data_registration(self.driver)

        # Вводим имя пользователя, номер телефона и регистрируемся
        user_name = self.get_user_name(type_user_name)
        obj_username.send_keys(user_name)
        obj_phone.send_keys(telephone)
        self.click_button(obj_submit_button)

        # проверемя сообщение об успешной высылке пароля на регистрацию
        self.check_form_sent_passwd(self.get_form_note_passwd(self.driver))

        # Находим пользователя по номеру телефона, проверемям что пароль, соль, телефон соответствуют требованиям
        info_user = databases.db1.accounting.get_data_user_by_phone('7' + telephone)
        self.check_correct_writing_phone_salt_passwd(info_user)
        info_user = info_user[0]  # телефон пользователя уникален, берём единственную запись, что бы не таскать список

        # Запоминаем исходный пароль пользователя и генерируем новый
        AccountingMethods.save_user_password(info_user["id"], info_user["code_value"], info_user["salt"])

        # генерируем новый пароль и подменяем на него
        default_new_passwd = AccountingMethods.get_default_password(4)
        hash_res_new = generate_sha256(default_new_passwd, info_user["salt"])
        databases.db1.accounting.update_user_password(info_user["id"], hash_res_new)
        databases.db1.accounting.update_user_salt(info_user["id"], info_user["salt"])

        # вводим пароль
        self.write_passwd_and_click_button(default_new_passwd)

        # восстанавливаем пароль и указываем тип аккаунта = продавец
        self.check_page_registration_after_add_passwd(user_id=info_user["id"], name=user_name, phone=telephone)

        Navigate.element_click(self.driver, self.get_reg_submit_not_disable(self.driver), change_page_url=True)
        self.check_count_roles_and_status(user_id=info_user["id"], count_roles=2, roles='1,2')

        # проверка, что зарегистрированный юзер залогинен
        self.check_menu_profile_widget_total(self.driver, info_user["display_name"])
        self.check_menu_profile_widget_my_shop(self.driver)
        self.user_profile_menu(self.driver, info_user)
コード例 #16
0
    def test_registration_by_phone_correct_user_wait_for_registration(self):
        """
        Title: Я могу зарегистрироваться по номеру телефона, если мой пользователь не окончил регистрацию в прошлый раз
        (WAIT_FOR_REGISTRATION)
        """
        service_log.run(self)
        type_user_name = 'VALID'
        telephone = str(random.randrange(1000000000, 7577777777, 1))

        # Переходим на страницу авторизации и далее на страницу регистрации
        self.get_page(self.driver, self.path_reg.URL_REG)
        self.click_to_phone(self.driver)

        obj_phone, obj_username, obj_submit_button = self.get_data_registration(self.driver)

        # Вводим имя пользователя, номер телефона и регистрируемся
        user_name = self.get_user_name(type_user_name)
        obj_username.send_keys(user_name)
        obj_phone.send_keys(telephone)
        self.click_button(obj_submit_button)

        # проверемя сообщение об успешной высылке пароля на регистрацию
        self.check_form_sent_passwd(self.get_form_note_passwd(self.driver))

        # Находим пользователя по номеру телефона, проверемям что пароль, соль, телефон соответствуют требованиям
        info_user = databases.db1.accounting.get_data_user_by_phone('7' + telephone)
        self.check_correct_writing_phone_salt_passwd(info_user)
        info_user = info_user[0]  # телефон пользователя уникален, берём единственную запись, что бы не таскать список

        # Запоминаем исходный пароль пользователя и генерируем новый
        AccountingMethods.save_user_password(info_user["id"], info_user["code_value"], info_user["salt"])

        # генерируем новый пароль и подменяем на него
        default_new_passwd = AccountingMethods.get_default_password(4)
        hash_res_new = generate_sha256(default_new_passwd, info_user["salt"])
        databases.db1.accounting.update_user_password(info_user["id"], hash_res_new)
        databases.db1.accounting.update_user_salt(info_user["id"], info_user["salt"])

        # вводим пароль
        self.write_passwd_and_click_button(default_new_passwd)

        # восстанавливаем пароль и указываем тип аккаунта = покупатель
        self.check_page_registration_after_add_passwd(user_id=info_user["id"], name=user_name, phone=telephone)

        # Зарегистрировали пользователя, статус пользователя = WAIT_FOR_REGISTRATION
        # Регестрируем пользователя с тем же номером телефона

        # Переходим на страницу авторизации и далее на страницу регистрации
        self.get_page(self.driver, self.path_reg.URL_REG)
        self.click_to_phone(self.driver)

        obj_phone, obj_username, obj_submit_button = self.get_data_registration(self.driver)

        # Вводим имя пользователя, номер телефона и регистрируемся
        user_name = self.get_user_name(type_user_name)
        obj_username.send_keys(user_name)
        obj_phone.send_keys(telephone)
        self.click_button(obj_submit_button)

        # проверемя сообщение об успешной высылке пароля на регистрацию
        self.check_form_sent_passwd(self.get_form_note_passwd(self.driver))

        # Находим пользователя по номеру телефона, проверемям что пароль, соль, телефон соответствуют требованиям
        info_user = databases.db1.accounting.get_data_user_by_phone('7' + telephone)
        self.check_correct_writing_phone_salt_passwd(info_user)
        info_user = info_user[0]  # телефон пользователя уникален, берём единственную запись, что бы не таскать список

        # Запоминаем исходный пароль пользователя и генерируем новый
        AccountingMethods.save_user_password(info_user["id"], info_user["code_value"], info_user["salt"])

        # генерируем новый пароль и подменяем на него
        default_new_passwd = AccountingMethods.get_default_password(4)
        hash_res_new = generate_sha256(default_new_passwd, info_user["salt"])
        databases.db1.accounting.update_user_password(info_user["id"], hash_res_new)
        databases.db1.accounting.update_user_salt(info_user["id"], info_user["salt"])

        # вводим пароль
        self.write_passwd_and_click_button(default_new_passwd)

        # восстанавливаем пароль и указываем тип аккаунта = покупатель
        self.check_page_registration_after_add_passwd(user_id=info_user["id"], name=user_name, phone=telephone)

        # Нажимаем создать аккаунт
        Navigate.element_click(self.driver, self.get_reg_submit_not_disable(self.driver))
        self.check_count_roles_and_status(user_id=info_user["id"], count_roles=2, roles='1,2')

        # проверка, что зарегистрированный юзер залогинен
        self.check_profile_widget(self.driver)
        self.user_profile_menu(self.driver, info_user)