def check_incorrect_passwd_or_phone(self, driver): """ Проверяем форму при вводе не корректного пароля. :param driver: ссылка на драйвер """ self.check_error(driver) HelpNavigateCheckMethods.element_is_present(driver, self.set_text_xpath_error(self.TEXT_CHECK_PHONE_OR_PASS))
def good_card_short(driver, good): """ Метод получает объект короткая карточка товара по заданным данным :param good: данные товара :return: """ main_picture = good["content"][u'pictures'][u'value'][0].encode('utf-8') title = good["content"][u'title'][u'value'].encode('utf-8') min_stock = good["content"][u'min_stock'][u'value'] try: price = str(good["content"][u'price'][u'value'][u'significand']) if 3 < len(price) < 7: price = price[:-3] + " " + price[-3:] # здесь в кавычках неразрывные пробелы elif len(price) >= 7: price = price[:-6] + " " + price[-6:-3] + " " + price[-3:] except Exception: price = "---" g_card = { "card": Navigate.element_is_present(driver, Navigate.click_search.GOOD_CARD_BY_ID % good["ware_id"]), "picture": Navigate.element_is_present(driver, Navigate.click_search.GOOD_PICTURE % (good["ware_id"], main_picture)), "title": Navigate.element_is_present(driver, Navigate.click_search.GOOD_TITLE % (good["ware_id"], title)), "price": Navigate.element_is_present(driver, Navigate.click_search.GOOD_PRICE % (good["ware_id"], price)), "min_stock": Navigate.element_is_present(driver, Navigate.click_search.GOOD_MIN_STOCK % (good["ware_id"], min_stock)), } service_log.put("Короткая карточка товара найдена. Id: %s" % good["ware_id"]) return g_card
def is_user_logged(self, driver, user): """ Проверка, что пользователь залогинен. Корректность имени пользователя в хедере :param user: :return: """ Navigate.element_is_present(driver, Navigate.click_main.MENU_PROFILE_NAME % user['display_name'])
def check_instruction_not_receiver_passwd(self, driver): """ Проверка текста со списком инструкций, если пароль не пришел. :param driver: ссылка на драйвер """ HelpNavigateCheckMethods.element_is_present(driver, self.CHECK_OBJ_INSTRUCT_NOT_PASSWD % self.CHECK_INSTRUCT_NOT_PASSWD) for index in self.LIST_INSTRUCT_NOT_PASSWD: HelpNavigateCheckMethods.element_is_present(driver, self.OBJ_NOT_RECEIVER_PASSWD % index)
def get_data_restore(driver): """ Получить данные страницы восстановления пароля. :param driver: ссылка на драйвер :return: телефон, пароль, кнопка "Войти" """ phone = HelpNavigateCheckMethods.element_is_present(driver, "//input[@name='phone' and @placeholder='(800) 000-00-00']") sent_pass_button = HelpNavigateCheckMethods.element_is_present(driver, "//span[text()='Выслать пароль']") # кнопка Выслать пароль return phone, sent_pass_button
def check_text_message(self, driver, dialog, message): """ Проверить текстовое сообщение :param messages: :return: """ service_log.put("Checking Text-message") text = message[u'text'][u'text'].encode('utf-8') Navigate.element_is_present(driver, Navigate.check_chat.TEXT_MSG % (dialog, text))
def check_picture_message(self, driver, dialog, message): """ Проверить сообщение-картинка :param messages: :return: """ service_log.put("Checking Picture-message") picture_id = message[u'pictureId'].encode('utf-8') Navigate.element_is_present(driver, Navigate.check_chat.MSG_PICTURE % (dialog, picture_id))
def check_not_need_phone(self, driver): """ Проверка отсутствия окна ошибки "введите телефон". :param driver: ссылка на драйвер """ tx = None try: HelpNavigateCheckMethods.element_is_present(driver, self.set_text_xpath_error(self.TEXT_NEED_PHONE_EMAIL)) except Exception, tx: pass
def none_found(driver, test_string): """ Метод получает форму пользователей и товаров не найдено :param driver: :param test_string: """ form = { 'title': Navigate.element_is_present(driver, Navigate.check_search.CATALOG_ALL_EMPTY % test_string), 'description': Navigate.element_is_present(driver, Navigate.check_search.CATALOG_EMPTY_DESC), 'btn_catalog': Navigate.element_is_present(driver, Navigate.click_search.BTN_CATALOG) } return form
def search_form(driver): """ Метод получает объекты формы поиска :param driver: :return: словарь объектов формы поиска """ search_form = { "input": Navigate.element_is_present(driver, Navigate.input_main.SEARCH), "btn": Navigate.element_is_present(driver, Navigate.click_main.SEARCH_BTN) } service_log.put('Получены объекты формы поиска') return search_form
def found_only_users(driver, test_string): """ Метод получает форму товаров не найдено но найдены пользователи :param driver: :param test_string: :return: """ form = { 'title': Navigate.element_is_present(driver, Navigate.check_search.CATALOG_GOOD_EMPTY % test_string), 'description': Navigate.element_is_present(driver, Navigate.check_search.CATALOG_GOOD_EMPTY_DESC), 'btn_to_users': Navigate.element_is_present(driver, Navigate.click_search.BTN_TO_USERS % test_string) } return form
def check_user_message(self, driver, dialog, message, link_db): """ Проверить сообщение-карточка пользователя :param messages: :return: """ service_log.put("Checking User-message") user_id = str(message[u'userId']) user = link_db.accounting.get_user_by_criteria_only("id=%s" % user_id)[0] avatar_xpath = Navigate.check_chat.USER_AVATAR % (dialog, user_id, user["avatar_id"]) service_log.put("Find avatar xpath=%s" % avatar_xpath) Navigate.element_is_present(driver, avatar_xpath) Navigate.element_is_present(driver, Navigate.check_chat.USER_NAME % (dialog, user_id, user["display_name"]))
def check_message_info(self, driver, user_id, link_db_user, msg_info, read_time): """ Проверить информацию о сообещнии, пользователя отправителя, время отправки , метку о прочтении если пользователь отправил сообщение, если получил сообщение метку не проверять :param driver: вебдрайвер :param dialog: идентификатор диалога :param message: идентификатор сообщения :param link_db_user: ссылка на БД пользователей :param msg_info: информация об отправителе :param read_time: информация о времени прочтения сообщения """ user_sender_id = msg_info[u'participantId'] user_sender = link_db_user.accounting.get_user_by_criteria_only("id=%s" % user_sender_id)[0] if user_sender["avatar_id"] is None: user_sender["avatar_id"] = 'no_ava' if read_time != 0: read_flag = Navigate.check_chat.READ_MSG else: read_flag = Navigate.check_chat.UNREAD_MSG send_time = self.timestamp_to_hm(msg_info[u'sendingTimestamp']) Navigate.element_is_present(driver, Navigate.check_chat.SENDER_AVATAR % user_sender["avatar_id"]) Navigate.element_is_present(driver, Navigate.check_chat.SENDER_NAME % user_sender["display_name"]) Navigate.element_is_present(driver, Navigate.check_chat.SEND_TIME % send_time) if user_id == user_sender_id: Navigate.element_is_present(driver, read_flag)
def get_form_call_success(driver): """ Get popup after send message to seller as logged user. :param driver: :return: """ call_success = dict( success=Navigate.element_is_present(driver, Navigate.check_good.P_SUCCESS_SENT), title=Navigate.element_is_present(driver, Navigate.check_good.P_TITLE_SENT), body=Navigate.element_is_present(driver, Navigate.check_good.P_BODY_SENT), btn_to_catalog=Navigate.element_is_present(driver, Navigate.click_good.BTN_POPUP_TO_CATALOG), btn_close=Navigate.element_is_present(driver, Navigate.click_good.BTN_TO_CARD_GOOD) ) return call_success
def get_data_authorization(driver): """ Получить данные страницы авторизации. :param driver: ссылка на драйвер :return: телефон, пароль, кнопка "Войти" """ phone = HelpNavigateCheckMethods.element_is_present(driver, "//input[@name='phoneOrEmail']") phone.is_displayed() phone.is_enabled() password = HelpNavigateCheckMethods.element_is_present(driver, "//input[@name='password']") password.is_displayed() password.is_enabled() submit_button = HelpNavigateCheckMethods.element_is_present(driver, "//button[@type='submit']") # проверка кнопки Войти submit_button.is_displayed() submit_button.is_enabled() return phone, password, submit_button
def check_restore_page(self, driver): """ Проверка формы на странице "Забыли пароль". :param driver: ссылка на драйвер """ HelpNavigateCheckMethods.element_is_present(driver, self.check_restore.RESTORE_PAGE_FORM_AUTH) HelpNavigateCheckMethods.element_is_present(driver, self.check_restore.INPUT_PHONE) HelpNavigateCheckMethods.element_is_present(driver, self.check_restore.BTN_RESTORE) HelpNavigateCheckMethods.element_is_present(driver, self.check_restore.FORM_PHONE)
def get_login(driver): """ Ссылка на залогинивание. :param driver: драйвер """ p = HelpNavigateCheckMethods.element_is_present(driver, HelpAuthData.MENU_LOGIN) service_log.put("Submit button find.") return p
def go_restore_page(driver, sleep=2): """ Переход на страницу "Забыли пароль". :param driver: ссылка на драйвер """ restore_button = HelpNavigateCheckMethods.element_is_present(driver, HelpAuthData.check_restore.RESTORE_PAGE) restore_button.click() time.sleep(sleep)
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
def get_pass_input(driver): """ :param driver: :return: """ return HelpNavigateCheckMethods.element_is_present(driver, HelpAuthData.FORM_PASS)
def check_need_password(self, driver): """ Проверка окна ошибки "введите пароль". :param driver: ссылка на драйвер """ msg = "Не вывелось сообщение об ошибке 'Вы ввели неверный пароль. Пожалуйста попробуйте еще раз.'" self.assertIsNotNone( HelpNavigateCheckMethods.element_is_present(driver, self.set_text_xpath_error(self.TEXT_NEED_PASSWORD)), msg)
def left_menu(driver): """ Метод получает объекты меню слева на странице поиска и количество найденных товаров и пользователей :param driver: :return: словарь объектов формы меню """ active_url = driver.current_url.encode('utf-8') type_search = active_url[active_url.rfind('/') + 1:active_url.rfind('?')] menu = { "title": Navigate.element_is_present(driver, Navigate.check_search.TITLE_SEARCH), "goods": Navigate.element_is_present(driver, Navigate.click_search.GOODS_MENU[type_search]), "users": Navigate.element_is_present(driver, Navigate.click_search.USERS_MENU[type_search]), } menu.update({"count_goods": menu["goods"].text.encode('utf-8').strip("Товары ")}) menu.update({"count_users": menu["users"].text.encode('utf-8').strip("Пользователи ")}) service_log.put("Получены объекты левого меню на странице поиска") return menu
def get_repeat_send_passwd(driver): """ Найти кнопку отправить пароль повторно. :param driver: ссылка на драйвер :return: ссылка на объект """ time.sleep(30) # стоит задержка в 30 секунд на отсылку паролей p = HelpNavigateCheckMethods.element_is_present(driver, HelpAuthData.REPEAT_SEND_PASSWD) return p
def get_visitor_form_call_success(driver): """ Get popup after send message to seller as visitor. :param driver: :return: """ call_success = dict( success=Navigate.element_is_present(driver, Navigate.check_good.P_SUCCESS_SENT), title=Navigate.element_is_present(driver, Navigate.check_good.P_VISITOR_TITLE_SENT), body=Navigate.element_is_present(driver, Navigate.check_good.P_VISITOR_BODY_SENT), input_password=Navigate.element_is_present(driver, Navigate.input_good.POPUP_INPUT_PASS), label_help=Navigate.element_is_present(driver, Navigate.check_good.P_HELP_PASS), btn_reg=Navigate.element_is_present(driver, Navigate.click_good.BTN_POPUP_REG), btn_reject=Navigate.element_is_present(driver, Navigate.click_good.BTN_POPUP_REJECT), label_attention=Navigate.element_is_present(driver, Navigate.check_good.P_ATTENTION), link_agreement=Navigate.element_is_present(driver, Navigate.click_good.POPUP_LINK_AGREEMENT), btn_close=Navigate.element_is_present(driver, Navigate.click_good.BTN_TO_CARD_GOOD) ) return call_success
def get_form_call_seller(driver): """ Get popup 'Call with seller' as logged user. :param driver: :return: """ call_seller = dict( title=Navigate.element_is_present(driver, Navigate.check_good.P_TITLE), label_who=Navigate.element_is_present(driver, Navigate.check_good.P_WHO), who=Navigate.element_is_present(driver, Navigate.check_good.P_WHO_VALUE), label_subject=Navigate.element_is_present(driver, Navigate.check_good.P_SUBJECT), good=Navigate.element_is_present(driver, Navigate.click_good.POPUP_CARD_GOOD), label_message=Navigate.element_is_present(driver, Navigate.check_good.P_MESSAGE), input_message=Navigate.element_is_present(driver, Navigate.input_good.POPUP_INPUT_MSG), btn_send=Navigate.element_is_present(driver, Navigate.click_good.BTN_SEND), btn_cancel=Navigate.element_is_present(driver, Navigate.click_good.BTN_CANCEL_CALL), btn_close=Navigate.element_is_present(driver, Navigate.click_good.BTN_TO_CARD_GOOD), ) return call_seller
def get_validated_email_success(driver): """ Получить форму успешной активации емайла :param driver: :return: """ Navigate.element_is_present(driver, Navigate.check_reg.E_TITLE_VALIDATED) Navigate.element_is_present(driver, Navigate.check_reg.E_ICON_ACTIVATE_SUCCESS) Navigate.element_is_present(driver, Navigate.check_reg.E_TEXT_VALIDATED_SUCCESS) return Navigate.element_is_present(driver, Navigate.click_reg.E_BTN_START_WORK_AFTER_SUCCESS)
def check_ware_message(self, driver, dialog, message, link_db): """ Проверить сообщение-карточка товара :param messages: :return: """ service_log.put("Checking Ware-message") ware_id = message[u'wareId'].encode('utf-8') ware = link_db.warehouse.get_wares_by_ware_id(ware_id)[0] info = ware[u'content'] picture = info[u'pictures'][u'value'][0].encode('utf-8') title = info[u'title'][u'value'].encode('utf-8') p = [str(info[i][u'value'][u'significand']) for i in info if i == u'price'] p = ''.join(p) prc = lambda s: "---" if s == '' else s price = prc(p) quantity = str(info[u'min_stock'][u'value']) Navigate.element_is_present(driver, Navigate.check_chat.WARE_PICTURE % (dialog, ware_id, picture)) Navigate.element_is_present(driver, Navigate.check_chat.WARE_NAME % (dialog, ware_id, title)) price_web = Navigate.element_is_present(driver, Navigate.check_chat.WARE_PRICE % (dialog, ware_id)).text price_web = price_web.encode('utf-8').replace(' ', '') self.assertEqual("Заштуку\n%sруб." % price, price_web, "Цена из БД '%s', цена из web '%s'" % (price, price_web)) quantity_web = Navigate.element_is_present(driver, Navigate.check_chat.WARE_QUANTITY % (dialog, ware_id)).text quantity_web = quantity_web.encode('utf-8').replace(' ', '') self.assertEqual("Мин.заказ\n%sшт." % quantity, quantity_web, "Мин. заказ из БД '%s', и из web '%s'" % (quantity, quantity_web))
def get_reg_email_success(driver, email): """ Получить форму успешной регистрации по емайл :param driver: :param email: :return: """ Navigate.element_is_present(driver, Navigate.check_reg.E_TITLE_REG_SUCCESS) Navigate.element_is_present(driver, Navigate.check_reg.E_ICON_REG_SUCCESS) Navigate.element_is_present(driver, Navigate.check_reg.E_TEXT_REG_SUCCESS % email) return Navigate.element_is_present(driver, Navigate.click_reg.E_BTN_START_WORK)
def go_registration_page(driver, type_xpath=1, env_base_url=MainClass.ENV_BASE_URL, sleep=2): """ Переход на страницу регистрации. :param driver: ссылка на драйвер :param type_xpath: тип перехода по xpath :param sleep: задержка в миллесекундах """ registration_button = None if type_xpath == 1: registration_button = HelpNavigateCheckMethods.element_is_present(driver, HelpAuthData.REGISTRATION_PAGE) # time.sleep(sleep) elif type_xpath == 2: 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) registration_button = HelpNavigateCheckMethods.element_is_present(driver, HelpAuthData.click_main.BUTTON_REG_AN_LOGIN) registration_button.click() time.sleep(sleep)
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)