自动化之UI(autoit)
自动化
说到自动化,我真的很不喜欢UI这层去做实践。前置条件要求比较严谨,如果不满足特定的前置条件,那么成本实在太大了。
投入与产出差过大,效果打折扣。从互联网来说,UI自动化是入门门槛很低的一种实践,但是互联网能满足这种前置条件的产品感觉并不多。
其一:它需要产品是维稳的,即变动不是非常的大。
其二:对于元素会有一定的要求,比如web,那么对html的页面元素就会希望开发能规范ID或者class等;对于PC应用,也则需要有可识别的ID,包括移动APP也是。
常见使用的工具一般集合在:selenium/uiautomation/appium/monkey等,早之前还有QTP。
我最早练手是使用的QTP,后面陆陆续续也用过一些其他的,比如web自动化还做了浏览器js插件去适配测试。
后面,有接收到任务要求做PC应用程序的自动化,当时认为QTP太大了,而且需要破解等比较麻烦,就改用了AutoIT工具去实现。
AutoIT这款工具,大部分是被用来做游戏外挂的,所以想做外挂的人不要局限于按键精灵。
AutoIT范例
首先介绍下AutoIt常用的两个菜单项,如下图:
1.帮助文档
2.autoit window info分为32位系统识别和64位系统识别,识别程序应用的元素。类似于selenium抓取的html元素,又类似于uiautomationview这个。

识别元素界面打开如下:请记住红色圈圈内图标。抓取元素就是靠点击该按钮不放手拖动到你需要的产品上去识别。粉红部分就是抓取到的信息

案例脚本如下:
#cs
对计算器进行自动化测试
自动计算4+5=9
结束后关闭计算器窗口
#ce Calc() Func Calc()
Local $time=2000;
;运行计算器
Run("calc.exe");
; 等待1s,计算器窗口出现
Local $hWnd = WinWait("[CLASS:CalcFrame]", "", 1)
;激活该窗口,即将光标定位道该窗口
WinActivate("[CLASS:CalcFrame]");
;点击4
ControlClick($hWnd, "", "Button4");
; 等待2s观察效果.
Sleep($time);
;点击+
ControlClick($hWnd, "", "Button23");
Sleep($time);
;点击5
ControlClick($hWnd, "", "Button10");
Sleep($time);
;点击=
ControlClick($hWnd, "", "Button28");
Sleep($time);
WinClose("[CLASS:CalcFrame]"); EndFunc ;==>Calc
AutoIt支持其他语言
AutoIt支持VBScript脚本,范例如下:
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
' Example WSH Script (VBScript)
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Require Variants to be declared before used
Option Explicit ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Declare Variables & Objects
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Dim oShell
Dim oAutoIt ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Initialise Variables & Objects
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Set oShell = WScript.CreateObject("WScript.Shell")
Set oAutoIt = WScript.CreateObject("AutoItX3.Control") ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Start of Script
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' WScript.Echo "This script will run some test calculations" oShell.Run "calc.exe", , FALSE ' Wait for the calc window to become active
oAutoIt.WinWaitActive "Calculator", "" ' Send some keystokes to calc
oAutoIt.Send "2*2="
oAutoIt.Sleep
oAutoIt.Send "4*4="
oAutoIt.Sleep
oAutoIt.Send "8*8="
oAutoIt.Sleep
oAutoIt.WinClose "Calc", ""
oAutoIt.WinWaitClose "Calc", "" WScript.Quit
AutoIt支持C++,同时也支持java,VB, Delphi, C等 。
均可以在以上语言开发的同时嵌入Autoit。
备注
以上脚本适用于win32标准控件框架,当你的框架并非win32标准时,可以使用autoit走相对坐标去实现或者使用sikuli去实现,总之,自动化是应产品而选择方案的。
详细脚本就不解释了,可以参考手册,手册内有非常多的案例。
做自动化或者说测试,个人感觉需要培养一种思路,而不是说会去用种工具就可以了。
同时,希望有志于往测试发展的人,还是希望至少能熟悉一种语言,这真的是优势,熟悉语言也可以为工作提供不少的帮助。
文章写的这些仅仅只是入门的一种,其实需要培养的思路是有助于去做一些框架的架设等事情,其实可以去熟悉下微软的SDTE。
自动化之UI(autoit)的更多相关文章
- 自动化测试 接口自动化及UI自动化测试平台设计演示
接口自动化及UI自动化测试平台设计演示 by:授客 QQ:1033553122 欢迎加入全国软件测试交流qq群:7156436 大家好,我是授客. 本视频意在分享个人,基于Python,Djan ...
- 接口自动化与UI自动化两者的可行性
1.首先接口测试是跳过前端界面对服务端的测试,UI测试是对前端界面的测试,从分层测试的角度考虑,两者不应该是可以互相取代的关系. 2.从公司开展自动化的的角度考虑,可以重点关注这个项目开展接口自动 ...
- (appium+python)UI自动化_07_app UI自动化实例【叮咚搜索加车为例】
前言 初学UI自动化的小伙伴,在配置好appium+python自动化环境后,往往不知道如何下手实现自动化.小编在初期学习的时候也有这种疑惑,在此以叮咚买菜app-搜索加车为实例,展示下appium是 ...
- 如何记录selenium自动化测试过程中接口的调用信息
上一篇博客,我写了python自动化框架的一些知识和粗浅的看法,在上一篇中我也给自己提出一个需求:如果记录在测试过程中接口的调用情况?提出这个需求,我觉得是有意义的.你在测试过程中肯定会遇到一些莫名其 ...
- AutoIT简介
AutoIT最初是为了帮助IT管理和维护而开发的工具,能自动完成软件的安装.由于自动化安装和自动化测试在功能需求上有许多相似之处,都要模拟用户对软件进行操作,并验证执行的结果,所以,AutoIT逐渐成 ...
- MS UI Automation Introduction
MS UI Automation Introduction 2014-09-17 MS UI Automation是什么 UIA架构 UI自动化模型 UI自动化树概述 UI自动化控件模式概述 UI 自 ...
- Server-Side UI Automation Provider - WPF Sample
Server-Side UI Automation Provider - WPF Sample 2014-09-14 引用程序集 自动化对等类 WPF Sample 参考 引用程序集 返回 UIAut ...
- Python+AutoIt实现界面工具开发
前言 不同于Linux服务器上的命令行操作,在windows系统上用户的使用习惯还是倾向于使用有界面的工具.如果工具是命令行交互操作的方式,可能是有悖于在windows上使用的操作习惯,往往不容易推广 ...
- 是否使用TDD(测试驱动开发)进行UI开发
问题 StackOverflow上有一则是否使用TDD(测试驱动开发)进行UI开发 的提问. _JacobE_问: 对于是否使用TDD进行开发UI这件事,我想了很久,但难以决定.我想听听你们的意见. ...
随机推荐
- Spring(十三)之SQL存储过程
SimpleJdbcCall 类可以被用于调用一个包含 IN 和 OUT 参数的存储过程.你可以在处理任何一个 RDBMS 时使用这个方法,就像 Apache Derby, DB2, MySQL, M ...
- Spring Boot Admin 2.1.0 全攻略
转载请标明出处: https://www.fangzhipeng.com 本文出自方志朋的博客 Spring Boot Admin简介 Spring Boot Admin是一个开源社区项目,用于管理和 ...
- import 本质
一. 模块:用来从逻辑上来组织python代码(变量,函数,类,逻辑,实现一个功能),本质就是,py结尾的python文件 1.1 导入方法: import module import module1 ...
- [iOS]app的生命周期
对于iOS应用程序,关键的是要知道你的应用程序是否正在前台或后台运行.由于系统资源在iOS设备上较为有限,一个应用程序必须在后台与前台有不同的行为.操作系统也会限制你的应用程序在后台的运行,以提高电池 ...
- POJ3074 Sudoku(lowbit优化搜索)
In the game of Sudoku, you are given a large 9 × 9 grid divided into smaller 3 × 3 subgrids. For exa ...
- Linux基础-2.目录文件的浏览、管理及维护
1.Linux文件系统的层次结构 1)了解Linux文件系统的树状结构: 在Linux或UNIX操作系统中,所有的文件和目录都被组织成一个以根节点开始的倒置树状结构 2)掌握目录的定义:目录相当于Wi ...
- 关于Spring配置文件提示的插件下载
1.springsource-tool-suite-update 最新各个版本下载地址 第一种方式: springsource-tool-suite-3.7.3.RELEASE-e4.5.2-upda ...
- javascript编写的一个完整全方位轮播图效果
1 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&q ...
- 大数据时代的结构化存储--HBase
迄今,相信大家肯定听说过 HBase,但是对于 HBase 的了解可能仅仅是它是 Hadoop 生态圈重要的一员,是一个大数据相关的数据库技术. 今天我带你们一起领略一下 HBase 体系架构,看看它 ...
- day 90 DjangoRestFramework学习二之序列化组件
DjangoRestFramework学习二之序列化组件 本节目录 一 序列化组件 二 xxx 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 序列化组件 首先按照 ...