现在的位置: 首页 > 综合 > 正文

AutoIT笔记

2013年09月21日 ⁄ 综合 ⁄ 共 3038字 ⁄ 字号 评论关闭

AutoIT是免费软件,编写类Basic风格的脚本,用在windows GUI中进行自动化操作,可以用来模拟键盘和鼠标操作,经常被网管拿来写自动安装脚本,应该对软件测试工作也有所帮助。以下是一些笔记。

Reference

http://www.autoitscript.com/      官方网站

http://www.autoitx.com/index.php   中文论坛

http://autoit.org.cn/        AutoIT软件专题站

《非常网管:windows脚本应用详解》

AutoIT帮助文档 

工具

AutoIT3安装后打开“AutoIT工具箱”,它的图标将出现在桌面右下角,常用的工具有两个:

1. 程序相关工具>“窗口信息工具”: 用来识别窗体和控件属性,有了这些属性就可以用AutoIT脚本进行操作

2. 脚本编辑工具>ACN SciTE:脚本编辑器(不仅可以编辑AutoIT脚本,还能编辑perl,vb等脚本)。脚本编辑后保存成.au3文件。该文件还能编译成exe文件,拷到别的机器直接运行。

 

脚本基础语法

  1. 编译程序:将脚本编译成可执行文件,可以脱离AutoIT环境直接运行。1)脚本文件右键菜单>编译脚本(带进度)或编译脚本(带选项);2)/autoit3/Aut2Exe/Aut2exe.exe
  2. 编程语言规范和VBScript类似,可以参考Help>语言相关>数据类型、变量类型、宏操作、运算符、条件选择语句、循环结构、对象概述、用户函数、脚本注释,和Help>关键字/语句相关。
  3. AutoIT的语句注释用分号";",续行符是"_",语句结尾不用任何符号, 注释块用#comments-start开头,#comments-end结尾,可以用缩写#cs,#ce代替。
  4. 变量以$开头,只有一种数据类型Variant
  5. AutoIT提供了一族宏,以@开头,具有常量属性,可以在表达式中使用。使用宏可以方便的获取系统信息,如windows目录,当前用户名。参考Help>宏相关>AutoIT相关宏、目录宏、系统信息宏、时间与日期宏。
  6. AutoItSetOption ( "选项" [, 参数] ) 调整Autoit各种函数/参数的运作方式,可以用Opt()代替。

Opt("WinTextMatchMode", 1)      ;1=完全匹配, 2=快速匹配
Opt("WinTitleMatchMode", 1)     ;1=开头, 2=子串, 3=完全, 4=高级 , -1 to -4=Nocase

 WinTitleMatchMode: 更改窗口函数在执行搜索操作时的标题匹配模式.

1 = 只匹配标题的前面部分(默认)
2 = 标题的任意子串皆可匹配
3 = 完全匹配标题
4 = 高级模式,用属性值代替标题文本,[PROPERTY1:Value1; PROPERTY2:Value2],属性包括CLASS,ACTIVE,LAST,REGEXPTITLE,REGEXPCLASS等

-1 到 -3 = 强制小写匹配.
WinTextMatchMode: 更改窗口函数在执行搜索操作时的窗口文本匹配模式.
1 = 完全匹配(较慢)模式(默认)
2 = 快速模式
在快速匹配模式下,AutoIt 将只能"看见"对话框文本、按钮文本和某些控件的标题,而在默认模式下则能检测到更多的文本(例如记事本窗口的内容). 如果在执行较多窗口的搜索操作时遇到性能(指速度)上的问题,那么您就应该考虑使用快速模式.

 

Help>函数参考(Function Reference):

窗口管理(Winodws management)函数可以激活,关闭窗口,等待窗口激活,判断窗口状态等,大部分函数以"Win"开头

窗口管理(Winodws management)> Controls 可以模拟各种控件的操作,如点击button,获取控件状态,文本,输入文本等,大部分函数以"Control"开头。需注意的是AutoIT仅支持标准的windows控件,对不支持(不能识别)的控件需要用鼠标(Mouse Management,函数以"Mouse"开头)和键盘(Keyboard Management)操作控制,准确度不如控件操作函数。

字符串操作(String Management):判断字符串格式,提取、替换、分割文本,删除空格等,以"String"开头。

进程管理(Process Management)用于管理进行,运行、关闭程序,关机等。

examples

1. 读取文本文件的每一行 FileReadLine

$file = FileOpen("test.txt", 0)

; 检查打开的文件是否可读
If $file = -1 Then
    MsgBox(0, "错误", "不能打开文件.")
    Exit
EndIf

; 每次读取一行文本,直到文件结束.
While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    MsgBox(0, "读取的行:", $line)
Wend

FileClose($file)

 用过的函数记录

example syntax description
Run(@WindowsDir & "/Notepad.exe", "", @SW_MAXIMIZE)  Run ( "program" [, "workingdir" [, show_flag[, opt_flag ]]] ) 运行一个应用程序,"./"表示脚本所在的当前路径
WinWaitActive("[CLASS:Notepad]", "", 5)
WinWaitAcitve("无标题 - 记事本","")
WinWaitActive ( "title" [, "text" [, timeout]] ) 等待一个窗口被激活
If WinActive("[CLASS:Notepad]") Then
    MsgBox(0, "", "记事本窗口是活动的")
EndIf
WinActive ( "title" [, "text"] ) 检查指定的窗口是否存在且当前被激活.

WinActivate("[CLASS:Notepad]", "")

Sleep(xxx) 等待xxx毫秒

WinActivate ( "title" [, "text"] ) 激活一个窗口
Send("{ENTER}")  ;其它{DOWN},{SPACE}
Send("!p")  ;send Alt+p
Send("^{TAB}")   ;send Ctrl+Tab,用于切换tab 页
Send("{TAB 2}")   ;press TAB twice
Send("!aVPN!n")
Send ( "keys" [, flag] ) 模拟键盘敲击。对标准程序,可以用send快捷键方式操作菜单和控件。
WinClose("我的文档","") WinClose ( "title" [, "text"] ) 关闭窗口
ControlClick("[CLASS:Notepad]", "", "MDIClient1") ControlClick ( "title", "text", controlID [, button [, clicks [, x [, y ]]]] ) 模拟点击一个控件,Control ID可以用窗口信息工具获取
$var = ControlGetText("[CLASS:Notepad]", "", "Edit1") ControlGetText ( "title", "text", controlID ) 获取控件文本
   ControlSetText ( "title", "text", controlID, <要输入的内容> )  设置控件文本

 

 

抱歉!评论已关闭.