工具命令相关解释:
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("未找到另存为对话框窗口")