python+AutoIT实现UI自动化上传图片
1、前言
需求:UI自动化上传本地图片
AutoIT官网:https://www.autoitscript.com/site/autoit/,下载进行安装(ps:跟其他软件一样点击下一步执行安装即可)
安装完成如下图,有这几个图标:
2、识别控件
在本机电脑查找打开此图标,步骤如下:
1)识别文件框,长按拖拽Finder Tool图标进行识别,具体如下图:
可在【Window】tab查看Title和Class,在【Control】tab查看ClassnameNN(ps:后续编写脚本需要用到)
2、识别打开按钮
可在【Window】tab查看Title,在【Control】tab查看ClassnameNN(ps:后续编写脚本需要用到)
3、编写脚本
在本机电脑查找打开此图标,用来编写脚本
编写脚本,格式如下:
#聚焦打开窗口 ControlFocus ( "打开", "", "Edit1") #暂停脚本直至指定窗口出现 WinWait("[CLASS:#32770]","",10) #填充图片地址 ControlSetText("打开","","Edit1","C:\Users\nmt\Desktop\timg.jpg") #延时 Sleep(2000) #点击打开按钮 ControlClick("打开","","Button1")
语法格式注释:
WinActivate("title") #聚焦到指定活动窗口 ControlFocus ( "title", "窗口文本", controlID) #设置输入焦点到指定窗口的某个控件上; WinWait ( "title" , "窗口文本" , 超时时间 ) #暂停脚本的执行直至指定窗口存在(出现)为止; ControlSetText ( "title", "窗口文本", controlID, "新文本" ) #修改指定控件的文本; Sleep ( 延迟 ) #使脚本暂停指定时间,单位是毫秒; ControlClick ( "title", "窗口文本", 控件ID , 按钮 , 点击次数 ) #向指定控件发送鼠标点击命令;
编写完成后按F5运行脚本,如没报错可看到成功上传图片(用此来验证脚本是否有错误):
注意!!!前提上传照片的窗口已经打开
3)将本地图片地址设置动态参数,在python调用时进行传入,方便后续更改图片,修改脚本为:
#聚焦打开窗口
ControlFocus ( "打开", "", "Edit1")
#暂停脚本直至指定窗口出现
WinWait("[CLASS:#32770]","",10)
#填充图片地址,$CmdLine[1]代表exe执行时的动态参数
ControlSetText("打开","","Edit1",$CmdLine[1])
#延时
Sleep(2000)
#点击打开按钮
ControlClick("打开","","Button1")
4、编译exe文件
在本机电脑打开此图标,将脚本编译成exe文件
选择路径,点击convert完成编译,如下图:
5、python调用
import os image_path = r'C:\Users\nmt\Desktop\timg.jpg' #本地图片路径 os.system(r'C:\Users\nmt\Desktop\upload_img.exe {}'.format(image_path)) #cmd调用exe文件
至此,成功实现UI自动化上传本地图片