20、Selenium + Python 实现 UI 自动化测试-AutoIT工具

时间:2023-01-01 03:52:07

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安装完后,可以通过菜单看到如下组件:

20、Selenium + Python 实现 UI 自动化测试-AutoIT工具

我们来分别介绍下这三个组件。

1、AutoIt v3 Window Info 组件

这个组件是用来获取窗口信息的工具。打开工具,如下图

20、Selenium + Python 实现 UI 自动化测试-AutoIT工具

鼠标左键点击finder tool, 不松开,左键拖动到要识别的窗口上。

(1)使用notepad 打开一个新文档,拖动到一个文档中的效果:

20、Selenium + Python 实现 UI 自动化测试-AutoIT工具

(2)使用AutoIT 定位一个弹框的信息获取图

20、Selenium + Python 实现 UI 自动化测试-AutoIT工具

注意:我们关注的信息有,Title、visible Text 信息、Mouse下面可以看到Position信息,坐标、Summary下面可以看到ClassnameNN信息


2、SciTE Script Editor 组件

20、Selenium + Python 实现 UI 自动化测试-AutoIT工具

根据前面获取到的信息,操作对象,有两种方法

(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 命令的可用按键列表地址:

https://wenku.baidu.com/view/9c7cfe2a3169a4517723a320.html


推荐博文

使用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 来操作,实在是方便,真可谓“居家旅行必备之良品”