UIautomation+pyautogui+pyperclip登录SAP系统并修改姓名
Python实现UI自动化
本文以自动登录SAP系统并修改姓名的方式简单介绍几个Python的UI自动化包
下载windows工具Inspect
官网下载链接:https://docs.microsoft.com/zh-cn/windows/win32/winauto/inspect-objects
选择自己电脑版本的Windows SDK,并点击安装
安装好后在上面路径中找到inspect.exe,安装默认是在C盘该目录下,此处我在安装时改成了D盘
点击Show Highlight Rectangle可以定位当前鼠标所指的控件
运行saplogon.exe
导入subprocess模块,根据路径运行SAP的exe文件运行进程。
import subprocess
subprocess.Popen(r'D:\Program Files (x86)\sap\FrontEnd\SAPgui\saplogon.exe')
控件重要参数
定位“SAP300”,程序中寻找组件主要是分两种方式:一种是根据Name找到该组件;另一种是根据AutomationId找到该组件,ControlType参数指明了控件的类型,根据不同的类型在Python程序中使用不同的函数即可。
UIautomation的github文档如下:
https://github.com/yinkaisheng/Python-UIAutomation-for-Windows/blob/master/readme_cn.md
键盘操作
键盘操作使用了pyautogui模块
import pyautogui
pyautogui.typewrite(message='9149187') #键盘输入'9149187'
pyautogui.press('tab') #按下tab键
pyautogui.hotkey('ctrl', 'v') #键盘按组合键
pyautogui.press('enter') #按下回车键
pyautogui.press('tab') #按下tab键
剪贴板操作
import pyperclip
pyperclip.copy('123456')#设置剪贴板内容为123456
定位控件示例
例如要点击这个更改的Button,我们可以发现它的AutomationId为“129”
同时观察控件树(Depth从0开始计数),发现它的Ancestors有3层,所以它的searchDepth的值为3。
具体代码如下所示:
change = auto.ButtonControl(searchDepth=3,AutomationId="129")
change.Click()
控制控件函数
不同类型的控件,使用对应函数的控件进行操作
控件类型 | 函数名 |
---|---|
Button | ButtonControl() |
Edit | EditControl() |
Window | WindowControl() |
Text | TextControl() |
常用的操作
- DoubleClick() 双击
- Click() 单击
- RightClick() 右键单击
- SendKeys() 发送字符
下面给出示例:
saplogon.TextControl(Name="SAP300").DoubleClick() #双击SAP300服务器
auto.EditControl(searchDepth=4,AutomationId="1001").SendKeys('SU01') #向Edit框输入SU01