Esempio n. 1
0
 def __init__(self):
     self.title = s('.sub-header')
     self.organizationField = s(
         by.xpath("//*[text()='Наименование организации']"
                  "/ancestor::div[contains(@class, 'ErrorNotificator')]"))
     self.userNameField = s(
         by.xpath("//*[text()='Ф.И.О. пользователя полностью']"
                  "/ancestor::div[contains(@class, 'ErrorNotificator')]"))
     self.emailField = s(
         by.xpath("//*[text()='Рабочая электронная почта']"
                  "/ancestor::div[contains(@class, 'ErrorNotificator')]"))
     self.phoneField = s(
         by.xpath("//*[text()='Номер телефона для связи с пользователем']"
                  "/ancestor::div[contains(@class, 'ErrorNotificator')]"))
     self.mobileOsField = s(
         by.xpath("//*[text()='Операционная система мобильного устройства']"
                  "/ancestor::div[contains(@class, 'ErrorNotificator')]"))
     self.googlePlayField = s(
         by.xpath("//*[text()='Учётная запись в Google Play']"
                  "/ancestor::div[contains(@class, 'ErrorNotificator')]"))
     self.loginCheckBox = s(by.xpath("//input[@type='checkbox']"))
     self.loginField = s(
         by.xpath("//*[text()='Логин пользователя']"
                  "/ancestor::div[contains(@class, 'ErrorNotificator')]"))
     self.scanUpload = s(
         by.xpath("//input[@type='file' and @class='upload-input']"))
     self.loginButton = s(
         by.xpath("//*[text()='Отправить']/ancestor::button"))
     self.formErrors = ss('.error')
Esempio n. 2
0
    def search_organization(self, input_text, hint_list):
        self.BranchName.set_value(input_text)  #Вводим значение для поля
        self.ShowButton.click()
        self.ClearButton.click()

        a = hint_list
        for i, ii in enumerate(a):
            self.BranchName.set_value(a[i])
            self.ShowButton.click()

            field_info = a[i]
            element_to_select = s(by.xpath(f".//*[text()='{field_info}']"))
            b = element_to_select.text
            print(a[i])
            print(b)
            #self.ClearButton.click()
            element_to_select.click()
            self.ShowSessions.click()
            self.TimeSelection.click()
            self.SelectDate.click()
            self.DateChoose.click()
            self.DateChoose.click()
            self.ShowButton.click()
            element_of_time = s(
                by.xpath(
                    "//*[@class='mui-date-picker']/descendant-or-self::*[text()='Выберите начало промежутка']/following-sibling::input"
                ))
            c = element_of_time.get_attribute('value')
            print(c)

            self.ClearButton.click()
            #value_to_select = organization_list.s(by.xpath("//*[text()='1']/ancestor::*[@role='gridcell']"))
            assert field_info == b
            self.FirstElementSessionTable.click()
            self.open3()
Esempio n. 3
0
 def select_mobile_os(self, value):
     self.mobileOsField.s('button').click()
     mobile_os_list = s(by.xpath("//*[@role='menu']"))
     mobile_os_list.should(visible)
     value_to_select = mobile_os_list.s(
         by.xpath(f"//*[text()='{value}']/ancestor::*[@role='menuitem']"))
     value_to_select.click()
     mobile_os_list.should_not(visible)
     assert value in self.mobileOsField.text, f'Мобильная ОС: {value} не выбрана'
Esempio n. 4
0
 def __init__(self, element: SeleneElement):
     self.element = element
     self.title = element.s(by.css("h6"))
     self.description = element.s(by.css("div.card-body p"))
     self.like_button = \
         element.s(by.xpath(".//button[*[name()='svg' and contains(@class,'fa-thumbs-up')]]"))
     self.delete_button = \
         element.s(by.xpath(".//button[*[name()='svg' and contains(@class,'fa-times-circle')]]"))
     self.loading_circle = element.s(by.css("svg.fa-circle-notch"))
Esempio n. 5
0
 def select_District(self, value):
     self.District.click()
     organization_list = s(by.xpath("//*[@role='menu']"))
     organization_list.should(visible)
     value_to_select = organization_list.s(
         by.xpath("//*[text()='ТАО']/ancestor::*[@role='menuitem']"))
     value_to_select.click()
     organization_list.should_not(visible)
     self.ShowButton.click()
     self.ClearButton.click()
Esempio n. 6
0
 def open_bar(self, bar_xpath: str, opener_xpath: str) -> None:
     """
     Открыть выдвигающуюся панель
         :param bar_xpath: Xpath панели
         :param opener_xpath: Xpath элемента открывания панели
     """
     self.log.debug(f"Work '{self.get_method_name()}'")
     # Если панель закрыта, то открыть
     if "width: 0px;" in s(by.xpath(bar_xpath)).get_attribute("style"):
         self.shading_disappearing()  # Затемнение
         self.highlight(s(by.xpath(opener_xpath)))
         s(by.xpath(opener_xpath)).click()
     # Проверить, что панель открылась
     assert "width: 0px;" not in s(
         by.xpath(bar_xpath)).get_attribute("style")
Esempio n. 7
0
 def select_workstation(self):
     self.WorkstationField.click()
     workstation_list = s(by.xpath("//*[@role='menu']"))
     workstation_list.should(visible)
     value_to_select = workstation_list.s(
         by.xpath(
             "//*[text()='Рабочая станция 02']/ancestor::*[@role='menuitem']"
         ))
     value_to_select.click()
     workstation_list.should_not(visible)
     self.ShowButton.click()
     self.TimeSelection.click()
     self.SelectDate.click()
     self.DateChoose.click()
     self.DateChoose.click()
Esempio n. 8
0
    def __init__(self):
        # header section
        self.header_wrap = s('.navigation-menu')
        self.header_logo = self.header_wrap.s('.logo')
        self.header_setting_icon = self.header_wrap.s('.settings')

        # table with online devices
        self.sync_device_table = s("#sync-devices")
        self.all_add_link = ss('#sync-devices-button')
        self.add_link = s('#sync-devices-button')
        self.setting_icon = s('.edit-device-menu-item.edit-item')

        # add online drive drop-down
        self.add_online_drive_link = s('.open').s(by.text('Online Drive'))
        self.all_add_dropdown_open = ss('.dropdown-menu .drive-device')

        # modal window 'create new item'
        self.modal_wrap = s('.modal.in')
        self.modal_name_input = self.modal_wrap.s('#name')
        self.modal_save_button = self.modal_wrap.s('.btn-success')
        self.modal_delete_icon = self.modal_wrap.s('.delete-item')

        # modal alert for confirm delete item
        self.confirm_delete_yes_button = s(
            by.xpath("//a[contains(@id, 'yes-button')]"))

        # error message popup
        self.error_alert_popup = s('.message.alert.alert-error')

        # header logout alert
        self.logout_alert = self.header_setting_icon.s('.open .dropdown-menu')
        self.logout_alert_sign_out_button = self.logout_alert.s('#logout')
Esempio n. 9
0
    def get_label_list(self, tag_xpath: str) -> list:
        """
        Возвращает список лейблов в заданном теге.
            :param tag_xpath: Xpath тега
            :return label_list: Список лейблов в тегах
        """
        self.log.debug(
            f"Work '{self.get_method_name()}' with tag_xpath '{tag_xpath}'")

        label_list = []
        tag_elements = ss(by.xpath(tag_xpath))

        self.log.debug(f"Size tag_elements: {tag_elements.size()}")

        for label in tag_elements:
            try:
                if label.is_displayed():
                    label_text = label.text
                    if label_text != "":
                        label_list.append(label_text)
            except TimeoutException as ex:
                # self.log.debug(f"Exception: Label with xpath '{tag_xpath}' not found")
                self.log.debug(f"Exception: '{ex}'")

        self.log.debug(f"Size label_list: {len(label_list)}")
        return label_list
Esempio n. 10
0
 def __init__(self):
     self.organization2Field = s(
         by.xpath("//*[text()='Поиск']"
                  "/ancestor::div[contains(@class, 'ErrorNotificator')]"))
     self.loginField = s('[name="login"]')
     self.passwordField = s('[name="password"]')
     self.loginButton = s('button')
Esempio n. 11
0
 def select_organization(self, value):
     organization_input = self.organizationField.s('input')
     organization_errors = self.organizationField.ss('.error')
     organization_input.click()
     organization_list = s(by.xpath("//*[@role='menu']"))
     organization_list.should(visible)
     try:
         value_to_select = organization_list.s(
             by.xpath(
                 f"//*[text()='{value}']/ancestor::*[@role='menuitem']"))
         value_to_select.click()
         organization_list.should_not(visible)
     except (TimeoutException, NoSuchElementException):
         return False
     return organization_input.get_attribute('value') == value and len(
         organization_errors) == 0
Esempio n. 12
0
    def get_user_language(self, profile_page) -> str:
        """ Возвращает язык пользователя из профиля """
        self.log.debug(f"Work '{self.get_method_name()}'")

        # Переключиться на фрейм
        profile_page.switch_to_page_frame()

        language_label_xpath = "//label[@for='language']"
        self.flash(s(by.xpath(language_label_xpath)))

        language_xpath = language_label_xpath + "/following-sibling::select/option[@selected='selected']"
        user_language = s(by.xpath(language_xpath)).text

        self.log.debug(f"User language: '{user_language}'")
        allure.attach(f"{user_language}", f"User language: {user_language}")

        return user_language
Esempio n. 13
0
 def __init__(self):
     self.sign_link = s(by.xpath("//a[text()='Войти']"))
     self.email_field = s('[name="mail"]')
     self.password_field = s('[name="password"]')
     self.login_button = s('#login_form_submit')
     self.user_settings_link = s('#js-usermenu-dropdown')
     self.cookie_accept_button = s('a.js-cookie-consent-accept')
     self.create_new_event_button = s('#publishEvent1')
Esempio n. 14
0
 def remove_all_jobs(self):
     time.sleep(1)
     jobs = ss(by.xpath('//button[starts-with(@id,"jobsListJobDeleteButton")]'))
     count = len(jobs)
     while count >= 1:
             jobs[count - 1].click()
             time.sleep(0.1)
             count -= 1
     return self
Esempio n. 15
0
    def __init__(self):
        super().__init__()
        self.url = "https://sprintboards.io/boards"

        self.green_plus = s(by.css("button.text-success>svg[data-icon=plus-circle]"))
        self.red_plus = s(by.css("button.text-danger>svg[data-icon=plus-circle]"))

        self.add_card_modal = s(by.css("#add-card-modal"))
        self.add_card_title = s(by.xpath("//div[h5[text()=\"Title\"]]//input"))
        self.add_card_description = s(by.xpath("//div[h5[text()=\"Description\"]]//textarea"))
        self.add_card_button = s(by.css("div.modal-footer button"))

        self.red_cards = ss(by.css("div.card.border-danger"))
        self.green_cards = ss(by.css("div.card.border-success"))

        self.modal_title = s(by.css("div.modal-title"))
        self.modal_body = s(by.css("div.modal-body"))
        self.modal_confirm_button = s(by.css("div.modal-footer button.btn-danger"))
Esempio n. 16
0
 def select_category(self, category):
     self.event_category.scroll_to()
     self.event_category.click()
     element_to_select = self.event_category.s(
         by.xpath(f".//option[text()='{category}']"))
     element_to_select.should(visible)
     element_to_select.click()
     self.event_category.click()
     assert element_to_select.get_attribute('value') == self.event_category.get_attribute("value"), \
         f'Ошибки при заполнении поля: Категория события. Данные: {category}'
Esempio n. 17
0
 def __init__(self):
     self.event_title = s('#title')
     self.event_description = s('#shortdescription')
     self.event_date_start = s('#datestart')
     self.event_time_start = s('#timestart')
     self.event_date_end = s('#dateend')
     self.event_time_end = s('#timeend')
     self.event_city = s('#token-input-city')
     self.event_category = s('[name="category[]"]')
     self.event_submit_button = s('#submit_send')
     self.addition_settings_link = s(
         by.xpath("//a[text()='Дополнительные настройки']"))
     self.event_settings_block = s('#event-settings')
     self.add_partner_link = s('#add-partner')
Esempio n. 18
0
    def get_inputs_attr_list(self, attr: str) -> list:
        """
        Возвращает список значений заданных атрибутов в тегах "input"
            :return attr_value_list: Список значений атрибутов
        """
        self.log.debug(f"Work '{self.get_method_name()}'. Attribute: '{attr}'")

        attr_value_list = []
        input_xpath = f"//input[@{attr} and @name!='csrfmiddlewaretoken']"
        input_elements = ss(by.xpath(input_xpath))

        for element in input_elements:
            attr_value_list.append(element.get_attribute(f"{attr}"))

        return attr_value_list
Esempio n. 19
0
    def get_button_attr_list(self, attr: str) -> list:
        """
        Возвращает список значений заданных атрибутов в тегах "button"
            :return attr_value_list: Список значений атрибутов
        """
        self.log.debug(f"Work '{self.get_method_name()}'. Attribute: '{attr}'")

        attr_value_list = []
        button_xpath = f"//button[@{attr}]"
        button_elements = ss(by.xpath(button_xpath))

        for element in button_elements:
            attr_value_list.append(element.get_attribute(f"{attr}"))

        return attr_value_list
Esempio n. 20
0
 def __init__(self):
     self._header = s('app-lbl[ng-reflect-key="Header_Toolbar_WelcomeTo"]')
     self.pl = s(by.xpath('//div[text()="PL"]'))
     self.en = s(by.xpath('//div[text()="EN"]'))
     ############################################################
     self._new_job_mane = s('#jobsListNewJobNameInput')
     self._add_button = s('#jobsListNewJobNameButton')
     self.jobs_list = ss(by.xpath(' //*[starts-with(@id,"jobsListJob")]//h3'))
     self.first_job = browser.element(by.xpath(' (//*[starts-with(@id,"jobsListJob")]//h3)[1]'))
     self.removes = browser.elements(by.xpath('//h3[@class="mat-line"]/../../button'))
     self._body = s('mat-toolbar.mat-primary > span:nth-child(1)')
     self.job = 'h3.mat-line'
     self.work_plate = '#canvasPanel'
     ############################################################
     self.allert = s(by.xpath('//snack-bar-container//span'))
     ############################################################
     self.work_tab = s(by.xpath('//app-lbl[text()="Work"]'))
Esempio n. 21
0
    def get_div_label_list(self, tag_xpath: str) -> list:
        """
        Возвращает список лейблов (текст) в теге "div"
            :param tag_xpath: Xpath тега
            :return label_list: Список лейблов
        """
        self.log.debug(
            f"Work '{self.get_method_name()}' with tag_xpath '{tag_xpath}'")

        label_list = []
        tag_div_elements = ss(by.xpath(tag_xpath))

        self.log.debug(f"Tag_div_elements: {tag_div_elements}")

        for label in tag_div_elements:
            # label.text
            self.log.debug(f"Div label element: {label}")

        return label_list
Esempio n. 22
0
    def alert_accept(self, page) -> None:
        """
        Подтверждение в небраузерном алерт-е
            :param page: Page Object
        """
        self.log.debug(f"Work '{self.get_method_name()}'")
        ok_button_xpath = "//button[@id='alertify-ok']"

        # Иначе всплывающего окна не видно
        self.drv.switch_to.default_content()  # Вернуться из фреймов
        page.switch_to_page_frame()  # Снова переключиться на фрейм

        # Дождаться ПОЯВЛЕНИЯ всплывшего окна
        wait.WebDriverWait(self.drv, config_file.IMPLICITLY_WAIT_TIMEOUT) \
            .until(ec.element_to_be_clickable((By.XPATH, ok_button_xpath)))

        self.highlight(s(by.xpath(ok_button_xpath))).click()

        # Дождаться ПРОПАДАНИЯ всплывшего окна
        wait.WebDriverWait(self.drv, config_file.IMPLICITLY_WAIT_TIMEOUT) \
            .until_not(ec.element_to_be_clickable((By.XPATH, ok_button_xpath)))
Esempio n. 23
0
    def close_frames(self, wait_time: int = 60) -> None:
        """
        Закрыть все 'iframes' путём нажатия крестика в закладке
            :param wait_time: Время ожидания в секундах
        """

        self.log.debug(
            f"Work '{self.get_method_name()}'. Wait time: {wait_time} seconds."
        )

        close_frame_xpath = "//div[@id='mainTabs']//div[@class='close-button']"

        frames_count_for_close = 10  # Бывали зацикливания какие-то в Webdriver
        while frames_count_for_close > 0:

            crosses_closing_frames = ss(by.xpath(close_frame_xpath))
            frames_count = crosses_closing_frames.size()
            self.log.debug(f"Opened frames: {frames_count} ")
            if frames_count > 0:

                # Обработка долгого автоматического обновления фрейма
                self.check_show_control_with_adaptive_waiting(
                    close_frame_xpath, wait_time)

                self.highlight(crosses_closing_frames[0])

                try:
                    crosses_closing_frames[0].click()
                except WebDriverException:
                    self.log.debug(
                        f"Cross click error - wait {config_file.WAIT_TIMEOUT} second"
                    )
                    time.sleep(config_file.WAIT_TIMEOUT)
                    crosses_closing_frames[0].click()

                frames_count_for_close -= 1
            else:
                break
Esempio n. 24
0
 def remove_job(self, job_name):
     s(by.xpath('//h3[contains(text(), "{}")]/../..//button[starts-with(@id,"jobsListJobDeleteButton")]'
                .format(job_name))).click()
     return self
Esempio n. 25
0
 def press_enter_button(self):
     element(by.xpath(LoginPage.login_button)).click()
     return MainPage()
Esempio n. 26
0
 def __init__(self):
     self.text_center = s(by.css(".text-center"))
     self.account_dropdown = s(by.css("#account-dropdown"))
     self.create_board = s(by.xpath("//li[a/text()=\"Create Board\"]"))
Esempio n. 27
0
 def click_by_xpath(self, xpath, value):
     browser.element(by.xpath(xpath.format(value))).click()
     return self
Esempio n. 28
0
    def __init__(self):
        self.loginField = s('[name="Username"]')
        self.passwordField = s('[name="Password"]')
        self.loginButton = s('[name="button"]')
        self.BranchName = s('#branchTitle')
        self.SelectMenu_Branches = s(
            by.xpath(
                u"(.//*[normalize-space(text()) and normalize-space(.)='Статистика'])[1]/following::div[4]"
            ))
        self.SelectBranch = s('[name="branchTitle"]')
        self.ShowBranch = s(
            by.xpath(
                u"(.//*[normalize-space(text()) and normalize-space(.)='Avilex test v.2.0'])[1]/following::div[4]"
            ))
        self.ShowSessions = s(by.xpath("//a[text()='Сессии обслуживания']"))
        self.WorkstationField = s(
            by.xpath("//*[text()='Рабочее место']"
                     "/ancestor::div[contains(@class, 'col-3-middle')]"))
        self.District = s('#ao')
        self.List = s(by.xpath("//*[@role='menu']"))
        self.ShowButton = s(
            by.xpath("//*[text()='Показать']/ancestor::button"))
        self.ClearButton = s(
            by.xpath("//*[text()='Очистить']/ancestor::button"))

        self.TimeSelection = s(
            by.xpath("//*[text()='Выберите начало промежутка']"
                     "/ancestor::div[contains(@class, 'col-3-middle')]"))

        self.SelectDate = s(by.xpath("//*[text()='2']/ancestor::button"))
        self.DateChoose = s(by.xpath("//*[text()='Выбрать']/ancestor::button"))
        self.OrganizationList = s(
            by.xpath(
                "//*@role='gridcell'']/ancestor::div[contains(@class, 'rt-tbody')]"
            ))
        self.FirstElementSessionTable = s(
            by.xpath(
                "//*[@id='app']/div/div/div/article/div/div[2]/div/div[2]/div/div[1]/div[2]/div[1]"
            ))
Esempio n. 29
0
 def __call__(self, *args, **kwargs):
     return [s(self._locator),
             s(by.xpath(self._locator))][self._locator.startswith('(')]
Esempio n. 30
0
 def get_rows_order_part():
     return ss(by.xpath('//tr [@class=" "]')).should_be(
         have.size_at_least(1))