Example #1
0
class MainPage(BasePage):
    __INPUT = TextBox(By.XPATH, MainPageLocators.INPUT, "Input field")
    __SUBMIT = Button(By.XPATH, MainPageLocators.SUBMIT_BUTTON,
                      "Submit button")
    __QR_CODE = Link(By.XPATH, MainPageLocators.QR_CODE, "QR code")

    def __init__(self):
        super().__init__(By.XPATH, MainPageLocators.MAIN_PAGE, "Main page")

    def change_type_coding(self, text):
        Link(By.XPATH, MainPageLocators.OBJECT_CODING_LINK.format(text=text),
             "Type coding link").click()

    def is_type_change(self, text):
        if Block(By.XPATH,
                 MainPageLocators.OBJECT_CODING_LABLE.format(text=text),
                 "Type coding text").get_text() == text:
            return True
        else:
            return False

    def enter_link(self, text):
        self.__INPUT.clear_field()
        self.__INPUT.send_keys(text)
        self.__SUBMIT.click()

    def get_qr_code(self):
        url = self.__QR_CODE.get_attribute('src')
        return APIUtils.get_image(url)
Example #2
0
class Frame:
    __TEXT_FIELD = TextBox(By.XPATH, FrameLocators.LOCATOR_FRAME_TEXT,
                           "Text field")
    __IFRAME = By.XPATH, FrameLocators.LOCATOR_FRAME_IFRAME
    __BOLD_BUTTON = Button(By.XPATH, FrameLocators.LOCATOR_FRAME_BOLD_BUTTON,
                           "Bold button")
    __BOLD_TEXT = TextBox(By.XPATH, FrameLocators.LOCATOR_FRANE_BOLD_TEXT,
                          "Bold text")

    def __init__(self, settings):
        self.settings = settings

    def send_text(self, text):
        """
        method to send random text
        """
        Browser().switch_to_frame_by_locator(*self.__IFRAME)
        element = self.__TEXT_FIELD
        element.selenium_clear()
        element.send_keys(text)
        Browser().switch_to_default_content()

    def get_text(self):
        """
        method to get text

        :return: text
        """
        Browser().switch_to_frame_by_locator(*self.__IFRAME)
        text = self.__TEXT_FIELD.find_element().text
        Browser().switch_to_default_content()
        return text

    def do_text_bold(self):
        """
        method to do text bold
        """
        Browser().switch_to_frame_by_locator(*self.__IFRAME)
        element = self.__TEXT_FIELD.find_element()
        element.send_keys(Keys.CONTROL + self.settings['KEY_a'])
        Browser().switch_to_default_content()
        self.__BOLD_BUTTON.click()

    def is_text_bold(self):
        """
        method to check text is bold

        :return: if the text is bold then return true or not return false
        """
        Browser().switch_to_frame_by_locator(*self.__IFRAME)
        if self.__BOLD_TEXT.find_element():
            return True
        else:
            return False
Example #3
0
class UiPage(BasePage):
    """ Класс отдельной страницы наследуется от BasePage
        В конструкторе запускается метод __init__() родительского класса
        И инициализируются UI элементы принадлежащие странице.
        В классе можно создать вспомогательные методы-хэлперы
        объединяющие часто повторяющиеся действия в цепочки. И другие, по необходимости.
        """

    def __init__(self):
        super(UiPage, self).__init__()
        self.address = ""

        """ инициализируем UI элементы """
        #   Форма подписки
        self.text_field_name = TextField('Поле "Имя пользователя"', locator="name", loc_type=By.NAME)
        self.text_field_email = TextField('Поле "Email"', locator="email", loc_type=By.NAME)
        self.text_field_time = TextField('Поле "Время"', locator="time", loc_type=By.NAME)
        self.btn_subscribe = Button('Кнопка "Подписаться"',
                                    locator='.btn-success', loc_type=By.CSS_SELECTOR)

        #  Таблица со списком подписок
        self.subscribtions_table = Table('Таблица подписок', locator="tbody", loc_type=By.TAG_NAME)

        #   Кнопки Refresh и  Delete
        self.btn_sync = Button('Кнопка "Обновить"', locator='[data-test="sync-button"]', loc_type=By.CSS_SELECTOR)
        self.btn_clear = Button('Кнопка "Обновить"', locator='[data-test="clear-button"]', loc_type=By.CSS_SELECTOR)

    def set_email(self, value):
        self.text_field_email.set_value(value)

    def set_name(self, value):
        self.text_field_name.set_value(value)

    def set_time(self, value):
        self.text_field_time.set_value(value)

    def push_subscribe_button(self):
        self.btn_subscribe.click()

    def add_subscription(self, email, name, time):
        self.set_email(email)
        self.set_name(name)
        self.set_time(time)
        self.push_subscribe_button()

    def sync_subscriptions_list(self):
        self.btn_sync.click()

    def clear_subscriptions_list(self):
        self.btn_clear.click()
Example #4
0
    def __init__(self):
        super(UiPage, self).__init__()
        self.address = ""

        """ инициализируем UI элементы """
        #   Форма подписки
        self.text_field_name = TextField('Поле "Имя пользователя"', locator="name", loc_type=By.NAME)
        self.text_field_email = TextField('Поле "Email"', locator="email", loc_type=By.NAME)
        self.text_field_time = TextField('Поле "Время"', locator="time", loc_type=By.NAME)
        self.btn_subscribe = Button('Кнопка "Подписаться"',
                                    locator='.btn-success', loc_type=By.CSS_SELECTOR)

        #  Таблица со списком подписок
        self.subscribtions_table = Table('Таблица подписок', locator="tbody", loc_type=By.TAG_NAME)

        #   Кнопки Refresh и  Delete
        self.btn_sync = Button('Кнопка "Обновить"', locator='[data-test="sync-button"]', loc_type=By.CSS_SELECTOR)
        self.btn_clear = Button('Кнопка "Обновить"', locator='[data-test="clear-button"]', loc_type=By.CSS_SELECTOR)
Example #5
0
def get_buttons_by_id(id_name) -> list:
    logger.info("searching buttons with %s id" % id_name)
    result = __get_elements_by_id(id_name)
    result = [Button(i, "Element in list") for i in result]
    return result
Example #6
0
def get_button_by_id_without_app_id(id_name, name) -> Button:
    logger.info("searching element with %s id and name %s" % (id_name, name))
    return Button(ClientManager().driver.find_element_by_id(id_name), name)
 def click_submit(self):
     Button(By.ID, "index_login_button", "Submit credentials").click()
Example #8
0
 def skip_validation_button(self) -> Button:
     return Button(By.ID, "validation_skip", "skip_phone_validation")
Example #9
0
 def get_side_bar_item(self, item: SideBarItems) -> Button:
     return Button(By.ID, item.value,
                   f"Navigate to side bar item with id '{item.value}'")
Example #10
0
 def click_button_by_text(self, text):
     button = Button(
         By.XPATH,
         MainPageLocators.LOCATOR_MAIN_PAGE_BUTTON.format(text=text),
         f"{text} button")
     button.click()