示例#1
0
def return_by_the_click_map(main_data: object, table: tuple):
    '''
    получает путь, состоящий из элементов, который нужно нажать чтобы открыть данную таблицу.
    последовательно нажимает эти элементы
    '''
    len_click_map = len(table['dir'])
    if len_click_map > 0:
        push('esc', len_click_map, main_data)
        for dict_element in table['dir']:
            simple_click(main_data, dict_element)
            sleep(2)
示例#2
0
def get_table_section_menu(main_data: object):
    '''
    в таблицу с главным меню, добавляет
    данные о разделах каждой позиции (добавляет в значение ключа [table] каждого элемента) основного меню
    '''
    main_table = main_data.table_elements()['table']
    for dict_element in main_table:
        simple_click(main_data, dict_element)
        table = fix_text_matches(
            parse_elements_by_text(get_page(main_data.driver(), 'section')))
        fill_the_table(dict_element['table'], main_data.driver(), table)
    return main_data
示例#3
0
def get_page_info(main_data: object, x: dict, y: dict):
    '''
    собирает данные со страниц
    выстраивает пути к ним
    '''
    simple_click(main_data, x)
    simple_click(main_data, y)
    table = get_current_page(main_data.driver(), 'page')
    table['dir'] += (
        x,
        y,
    )
    push('esc', 2, main_data)
    return table
示例#4
0
def click_or_enter_text(dict_element: dict, main_data: object):
    '''
    ищет элемент в области окна браузера,
    в зависимотсти от node_name элемента 
    выполняет нажатие, далее срабатывает ожидание окон
    '''
    search_elem = search_element_pos(dict_element, main_data, 5)
    if search_elem:
        if dict_element['node_name'] == 'INPUT':
            simple_enter_text(main_data, dict_element, main_data.enter_text())
        else:
            simple_click(main_data, dict_element)
        wait_win_1c_head(main_data)
        wait_msg(main_data)
        reload(main_data)
示例#5
0
def wait_win_1c_head(main_data: object):
    '''
    ждет появления окна 1С:Предприятия
    если окно появляется пытается закрыть его
    если не находит кнопки для закрытия прерывает работу программы
    '''
    if wait_window(main_data.driver(), main_data.win_1c_head(), 1) == True:
        log_record('обнаружено окно: 1С:Предприятие')
        sleep(5)
        save_screenshot()
        element_box_1 = find_one_element_by_id(main_data.driver(),
                                               'messageBoxTable')
        element_box_2 = find_one_element_by_id(main_data.driver(),
                                               'ps2formContent')
        if element_box_1 == None:
            log_record(
                'не удалось обнаружить окно 1С:Предприятия - завершена работа программы'
            )
            reload(main_data)
        elements = find_many_elements_by_tag_name(element_box_1, 'button')
        elements += find_many_elements_by_tag_name(element_box_2, 'span')
        elements_dict = []
        for x in elements:
            elements_dict.append(get_info_from_element(x))
        if len(elements_dict) == 0:
            log_record(
                'не удалось установить кнопки окна 1С:Предприятия - завершена работа программы'
            )
            reload(main_data)
        buttons_list_text = []
        buttons_list = []
        for i in elements_dict:
            if i['text_elem'] == 'Да' or \
               i['text_elem'] == 'Нет' or \
               i['text_elem'] == 'Отмена' or \
               i['text_elem'] == 'OK' or \
               'Закрыть' in i['id_elem']:
                if 'Закрыть' in i['id_elem']:
                    i['text_elem'] = 'Закрыть'
                buttons_list_text.append(i['text_elem'])
                buttons_list.append(i)
        res_list = list(
            set(buttons_list_text)
            & set(['OK', 'Да', 'Нет', 'Отмена', 'Продолжить', 'Закрыть']))

        flag = False
        if flag == False:
            for i in res_list:
                if i == 'OK' or i == 'Продолжить' or i == 'Закрыть':
                    flag = True
                    for y in buttons_list:
                        if y['text_elem'] == i:
                            simple_click(main_data, y)
                            break
                    break

        if flag == False:
            for i in res_list:
                if i == 'Отмена':
                    for y in buttons_list:
                        if y['text_elem'] == 'Нет':
                            flag = True
                            simple_click(main_data, y)
                            break
                    break

        if flag == False:
            for i in res_list:
                if i == 'Да':
                    flag = True
                    for y in buttons_list:
                        if y['text_elem'] == i:
                            simple_click(main_data, y)
                            break
                    break

        if flag == False and element_box_1 != None:
            log_record(
                'не удалось закрыть окно 1С:Предприятия - завершена работа программы'
            )
            reload(main_data)