pywinauto

工具命令相关解释:

Click:单击鼠标左键。该操作通常用于模拟鼠标单击事件,例如在图形用户界面(GUI)中单击按钮、链接等。

Clicklnput:在指定的屏幕位置单击鼠标左键。该操作通常用于模拟鼠标单击事件,但可以指定单击的位置。

Close:关闭当前活动窗口。该操作通常用于模拟关闭窗口的操作,例如在GUI中点击“关闭”按钮。

CloseClick:在指定的屏幕位置单击鼠标左键,并关闭当前活动窗口。该操作通常用于模拟点击“关闭”按钮关闭窗口的操作。

DoubleClick:双击鼠标左键。该操作通常用于模拟鼠标双击事件,例如在GUI中双击图标、文件等。

DoubleClickinput:在指定的屏幕位置双击鼠标左键。该操作通常用于模拟鼠标双击事件,但可以指定双击的位置。

DragMouse:按住鼠标左键,拖动鼠标到指定的位置。该操作通常用于模拟拖动鼠标的操作,例如在GUI中拖动窗口、调整控件大小等。

DrawOutline:在指定的屏幕区域绘制一个矩形框。该操作通常用于标记或突出显示屏幕区域,例如在GUI中绘制选中区域的边框。

Maximize:将当前活动窗口最大化。该操作通常用于模拟最大化窗口的操作,例如在GUI中点击“最大化”按钮。

Minimize:将当前活动窗口最小化。该操作通常用于模拟最小化窗口的操作,例如在GUI中点击“最小化”按钮。

MoveMouse:将鼠标移动到指定的屏幕位置。该操作通常用于模拟鼠标移动的操作,例如在GUI中将鼠标移动到指定的菜单项、链接等。

MoveWindow:将当前活动窗口移动到指定的位置。该操作通常用于模拟移动窗口的操作,例如在GUI中拖动窗口或调整窗口位置。

PressMouse:按住鼠标左键。该操作通常用于模拟按住鼠标左键的操作,例如在GUI中拖动窗口或调整控件大小。

PressMouselnput:在指定的屏幕位置按住鼠标左键。该操作通常用于模拟按住鼠标左键的操作,但可以指定按住的位置。

ReleaseMouse:释放鼠标左键。该操作通常用于模拟释放鼠标左键的操作,例如在GUI中拖动窗口或调整控件大小。

ReleaseMouselnput:在指定的屏幕位置释放鼠标左键。该操作通常用于模拟释放鼠标左键的操作,但可以指定释放的位置。

Restore:将当前活动窗口还原到先前的大小和位置。该操作通常用于模拟还原窗口的操作,例如在GUI中点击“还原”按钮。

RightClick:单击鼠标右键。该操作通常用于模拟鼠标右键单击事件,例如在GUI中右击菜单项、链接等。

RightClicklnput:在指定的屏幕位置单击鼠标右键。该操作通常用于模拟鼠标右键单击事件,但可以指定右键单击的位置。

SetFocus:将焦点设置到指定的窗口或控件。该操作通常用于模拟设置焦点的操作,例如在GUI中将焦点设置到文本框、按钮等控件上。
pywinauto 是 Python 中用于自动化 Windows 应用程序的工具库,可以模拟用户操作,比如点击、输入、选择等,也可以读取和修改应用程序的控件属性。以下是 pywinauto 的一些常用功能和应用场景:

启动和连接应用程序

可以使用 Application() 函数启动和连接应用程序,该函数接受一个可执行文件名或者进程 ID 作为参数,返回一个 Application 对象,可以使用该对象来操作应用程序。


from pywinauto.application import Application

app = Application().start("notepad.exe")

查找和选择控件
可以使用 Application 对象的 connect 方法连接已经运行的应用程序,然后使用 Application 对象的 top_window 属性和 child_window 方法查找和选择控件,方法参数可以根据控件的属性进行指定。


from pywinauto.application import Application

app = Application().connect(title="Untitled - Notepad")
dialog = app.top_window()
edit = dialog.child_window(class_name="Edit")

操作控件
可以使用控件对象的 type_keys 方法输入文本,click 方法点击控件,set_text 方法设置控件的文本属性等。


from pywinauto.application import Application

app = Application().connect(title="Untitled - Notepad")
dialog = app.top_window()
edit = dialog.child_window(class_name="Edit")
edit.type_keys("Hello, World!")

获取控件属性
可以使用控件对象的 get_properties 方法获取控件的属性字典,也可以使用 print_control_identifiers 方法打印控件的属性和层次结构。


from pywinauto.application import Application

app = Application().connect(title="Untitled - Notepad")
dialog = app.top_window()
edit = dialog.child_window(class_name="Edit")
print(edit.get_properties())
edit.print_control_identifiers()

等待和超时
可以使用 Application 对象的 wait_cpu_usage_lower 方法等待应用程序的 CPU 使用率降低,也可以使用 Application 对象的 wait_cpu_usage_lower 方法等待控件出现或消失,超时时间可以通过 timeout 参数指定。


from pywinauto.application import Application
from pywinauto.timings import TimeoutError

app = Application().connect(title="Untitled - Notepad")
dialog = app.top_window()

try:
    # wait for the Edit control to appear
    edit = dialog.child_window(class_name="Edit").wait('visible', timeout=5)
except TimeoutError:
    print("Edit control did not appear within 5 seconds")

另存为对话框 输入框内写入文本

from pywinauto import Application
def set_save_as_file_name(file_name):
    app = Application().connect(title_re="另存为")
    dialog = app.window(title_re="另存为")
    file_name_box = dialog["Edit"]
    file_name_box.set_text(file_name)
set_save_as_file_name("hello worlss您好啊 我是ssd")

获取另存为对话框输入框的内容

from pywinauto import Desktop
from pywinauto.findwindows import ElementNotFoundError
try:
    # 获取桌面
    desktop = Desktop()
    # 获取 Save As 对话框窗口
    save_as_dialog = desktop["另存为"]
    # 获取文件名编辑框
    print(save_as_dialog)
    # 获取 save_as_dialog 窗口下的所有子控件
    controls = save_as_dialog.children()
    for ctrl in controls:
        if ctrl.class_name() == "Edit":
            # 如果是 Edit 类型的控件,则获取窗口文本(即文件名)
            file_name = ctrl.window_text()
            print(file_name)
except ElementNotFoundError:
    print("未找到 Save As 对话框窗口")

另存为对话框点击保存按钮

from pywinauto import Desktop
from pywinauto.findwindows import ElementNotFoundError
try:
    # 获取桌面
    desktop = Desktop()
    # 获取另存为对话框窗口
    save_as_dialog = desktop["另存为"]
    # 点击保存按钮
    save_button = save_as_dialog["保存(S)"]
    save_button.click()
except ElementNotFoundError:
    print("未找到另存为对话框窗口")

  目录