def find_window(backend, obj, level, dict, traces): success = True for loop_x in range(0, len(dict)): try: temp_list = dict[str(loop_x + 1)].split(",") name = None process = None handle = None path = None class_name = None class_name_re = None title = None title_re = None control_id = None control_type = None auto_id = None framework_id = None for loop_y in range(0, len(temp_list)): if "name=" in str(temp_list[loop_y]).strip(): name = str(temp_list[loop_y]).strip() name = name[5:] elif "process=" in str(temp_list[loop_y]).strip(): process = str(temp_list[loop_y]).strip() process = process[8:] elif "handle=" in str(temp_list[loop_y]).strip(): handle = str(temp_list[loop_y]).strip() handle = handle[7:] elif "path=" in str(temp_list[loop_y]).strip(): path = str(temp_list[loop_y]).strip() path = path[5:] elif "class_name=" in str(temp_list[loop_y]).strip(): class_name = str(temp_list[loop_y]).strip() class_name = class_name[11:] elif "class_name_re=" in str(temp_list[loop_y]).strip(): class_name_re = str(temp_list[loop_y]).strip() class_name_re = class_name_re[14:] elif "title=" in str(temp_list[loop_y]).strip(): title = str(temp_list[loop_y]).strip() title = title[6:] elif "title_re=" in str(temp_list[loop_y]).strip(): title_re = str(temp_list[loop_y]).strip() title_re = title_re[9:] elif "control_id=" in str(temp_list[loop_y]).strip(): control_id = str(temp_list[loop_y]).strip() control_id = control_id[11:] elif "control_type=" in str(temp_list[loop_y]).strip(): control_type = str(temp_list[loop_y]).strip() control_type = control_type[13:] elif "auto_id=" in str(temp_list[loop_y]).strip(): auto_id = str(temp_list[loop_y]).strip() auto_id = auto_id[8:] elif "framework_id=" in str(temp_list[loop_y]).strip(): framework_id = str(temp_list[loop_y]).strip() framework_id = framework_id[13:] if level == "app": if path is not None: obj = Application(backend=backend).connect(path=path) elif handle is not None: obj = Application(backend=backend).connect(handle=handle) elif process is not None: obj = Application(backend=backend).connect(process=process) elif title_re is not None: obj = Application(backend=backend).connect( title_re=title_re) else: obj = Application(backend=backend).connect(title=title) try: success = obj.is_process_running() except: success = False break else: if level == "main": if name is not None: obj = obj[name] elif backend == "uia": obj = obj.window(class_name=class_name, class_name_re=class_name_re, title=title, title_re=title_re, control_id=control_id, control_type=control_type, auto_id=auto_id, framework_id=framework_id) else: obj = obj.window(class_name=class_name, class_name_re=class_name_re, title=title, title_re=title_re, control_id=control_id, control_type=control_type) else: if name is not None: obj = obj[name] elif backend == "uia": obj = obj.child_window(class_name=class_name, class_name_re=class_name_re, title=title, title_re=title_re, control_id=control_id, control_type=control_type, auto_id=auto_id, framework_id=framework_id) else: obj = obj.child_window(class_name=class_name, class_name_re=class_name_re, title=title, title_re=title_re, control_id=control_id, control_type=control_type) if traces is True: try: trace_str = level if level is not "main": trace_str = trace_str + " " + str(loop_x + 1) print("") print(datetime.datetime.now().strftime( '%Y-%m-%d %H:%M:%S') + ": " + "\t=== * Locating " + trace_str + " start * ===") print("") obj.print_control_identifiers(depth=1) print("") print(datetime.datetime.now().strftime( '%Y-%m-%d %H:%M:%S') + ": " + "\t=== * Locating " + trace_str + " end * ===") print("") except: if level == "main": print(datetime.datetime.now().strftime( '%Y-%m-%d %H:%M:%S') + ": " + "\tUNABLE TO LOCATE MAIN WINDOW!") else: print(datetime.datetime.now().strftime( '%Y-%m-%d %H:%M:%S') + ": " + "\tUNABLE TO LOCATE CHILD WINDOW " + str(loop_x + 1) + "!") success = False break if not obj.exists(): success = False break except: print(traceback.format_exc()) success = False break if success is True: return obj else: return None