需求:
需要实现打开某个 windows 桌面软件,实现自动输入账号
和密码
,并且自动点击登录
的功能。
这样的话,后面就可以基于此实现定时登录或者多账号登录等其他功能。
这里以 某个桌面客户端举个例子,这是它的登录界面
实现:
1、下载 inspect.exe 工具,用来获取桌面客户端登录窗口的控件名称,下载地址为:https://developer.microsoft.com/zh-cn/windows/downloads/sdk-archive/
选择适合自己系统版本 sdk ,下载 winsdksetup.exe 安装后,可以在目录中找到 inspect.exe 工具
比如 C:\Program Files (x86)\Windows Kits\10\bin\10.0.20348.0\x64 目录下
2、通过 inspect.exe 工具 获取桌面客户端登录窗口的信息
a. 获取窗口 Name ,用来定位到整个桌面客户端登录窗口,这里的值是 XX OneQuant
b. 获取账号输入框的 ClassName ,这里的值是 Edit 。这里的值和下面密码输入框的值一样,所以代码里可以使用 Edit1 来表示
c. 获取密码输入框的 ClassName ,这里的值也是 Edit 。这里的值和上面账号输入框的值一样,所以代码里可以使用 Edit2 来表示
d. 获取登录按钮的 ClassName ,这里的值是 Button
3、实现打开桌面客户端,自动输入账号和密码,并且自动点击登录的功能
from pywinauto.application import Application
# 桌面软件路径
ax_path = "C:\Ax\XX OneQuant\AxOneQuant.exe"
# 自动打开桌面软件
app = Application(backend='uia').start(r'%s' % ax_path)
# 定位到桌面软件窗口
app = Application().connect(path=r'%s' % ax_path)
# 通过 inspect.exe 获取到的XX OneQuant 登录窗口 Name 属性的值
ax = app["XX OneQuant"]
# 除了通过 inspect.exe,也可以通过 print_control_identifiers() 获取窗口控件的所有属性
# ax.print_control_identifiers()
# 自动输入用户名,通过修改 inspect.exe 获取到的账号输入框的 ClassName 属性的值来实现
ax['Edit1'].set_text('jiucai')
# 自动输入密码,通过修改 inspect.exe 获取到的密码输入框的 ClassName 属性的值来实现
ax['Edit2'].set_text('123456')
# 点击登陆按钮,自动登录。通过点击 inspect.exe 获取到的登录按钮的 ClassName 来实现
ax['Button'].click()
4、实现的效果参考