Selenium 进行UI自动化时经常会遇到OS弹框,比如上传、下载框,对这种弹框,selenium无法处理,常常我们会选择AutoIT这个工具。
一、介绍
AutoIt v3 是用以编写并生成具有 BASIC 语言风格的脚本程序的免费软件,它被设计用来在Windows GUI(用户界面)中进行自动操作。通过它可以组合使用模拟键击、鼠标移动和窗口/控件操作等来实现自动化任务,而这是其它语言所无法做到或尚无可靠方法实现的
二、下载 & 安装
https://www.autoitscript.com/site/autoit/downloads/
下载注意版本即可;安装,就是Windows的下一步,下一步,不多说了。
三、功能手册
中文手册:http://www.jb51.net/shouce/autoit/,愿意深入研究的可以看看
四、组件介绍
AutoIT安装完后,可以通过菜单看到如下组件:
我们来分别介绍下这三个组件。
1、AutoIt v3 Window Info 组件
这个组件是用来获取窗口信息的工具。打开工具,如下图
鼠标左键点击finder tool, 不松开,左键拖动到要识别的窗口上。
(1)使用notepad 打开一个新文档,拖动到一个文档中的效果:
(2)使用AutoIT 定位一个弹框的信息获取图
注意:我们关注的信息有,Title、visible Text 信息、Mouse下面可以看到Position信息,坐标、Summary下面可以看到ClassnameNN信息
2、SciTE Script Editor 组件
根据前面获取到的信息,操作对象,有两种方法
(1)使用坐标。例如:MouseClick("left","1009","509",1)
第一个参数“left”代表左键,“right”代表右键
第二个参数代表左边距
第三个参数代表右边距
第四个参数代表点击几次,默认为1
(2)通过标题或文本定位对象,然后操作。例如:WinWaitActive('标题','文本')
第一个参数是对象的标题
第二个参数是对象的文本,可省略
3、Compile Script to .exe 组件
将2中编辑的脚本(.au3文件)转换成exe文件
然后selenium 就可以借助Python的os模块,进行调用
五、使用AutoIT 操作记事本
步骤:打开记事本,输入“我爱中国”,关闭记事本,点击保存,输入文件名为9
(1)使用AutoIt v3 Window Info 组件查看一个记事本的信息
(2)使用SciTE Script Editor,编辑如下内容,并保存
Run('notepad.exe')
WinWaitActive('无标题 - 记事本')
Send('我爱中国')
WinClose("无标题 - 记事本")
Send("!s")
WinWaitActive('另存为')
MouseClick('left','683','535',1)
Send("{BACKSPACE 1}")
Send("9")
MouseClick('left','1049','596')
(3)使用Compile Script to .exe,将其转换成exe文件
(4)双击运行该exe文件
注意:
直接copy我的脚本运行有可能会失败,因为不同的分辨率屏幕,窗口坐标不一样;
第一次运行成功,第二次就运行失败了,因为已经有了一个9.txt文件;
如果你要保存的目录下有9XX的文件,弹出的下拉匹配框有可能会遮挡保存按钮;
六、
1、实例一:操作弹框按钮
操作弹框按钮
Send("{TAB}"),如果默认按钮不在确定上,可以用tab切换后再回车
Send("{ENTER}"),有些弹框的确定按钮可以直接用回车
2、实例二:操作弹框中复杂元素(坐标)
MouseClick("left","1009","509",1)
附:
Autoit Send 命令的可用按键列表地址:
推荐博文
使用AutoIT 上传文件:
http://www.cnblogs.com/yajing-zh/p/5076881.html
http://www.cnblogs.com/fnng/p/4188162.html
http://www.cnblogs.com/wuhenyan/p/6419494.html
http://blog.csdn.net/huilan_same/article/details/52208363
总之,那些超出Selenium 能力范围之外的,系统级控件,使用AutoIT 来操作,实在是方便,真可谓“居家旅行必备之良品”