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)
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
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
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)
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)