示例#1
0
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