自动化

说到自动化,我真的很不喜欢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)的更多相关文章

  1. 自动化测试 接口自动化及UI自动化测试平台设计演示

    接口自动化及UI自动化测试平台设计演示   by:授客  QQ:1033553122 欢迎加入全国软件测试交流qq群:7156436 大家好,我是授客. 本视频意在分享个人,基于Python,Djan ...

  2. 接口自动化与UI自动化两者的可行性

    1.首先接口测试是跳过前端界面对服务端的测试,UI测试是对前端界面的测试,从分层测试的角度考虑,两者不应该是可以互相取代的关系.   2.从公司开展自动化的的角度考虑,可以重点关注这个项目开展接口自动 ...

  3. (appium+python)UI自动化_07_app UI自动化实例【叮咚搜索加车为例】

    前言 初学UI自动化的小伙伴,在配置好appium+python自动化环境后,往往不知道如何下手实现自动化.小编在初期学习的时候也有这种疑惑,在此以叮咚买菜app-搜索加车为实例,展示下appium是 ...

  4. 如何记录selenium自动化测试过程中接口的调用信息

    上一篇博客,我写了python自动化框架的一些知识和粗浅的看法,在上一篇中我也给自己提出一个需求:如果记录在测试过程中接口的调用情况?提出这个需求,我觉得是有意义的.你在测试过程中肯定会遇到一些莫名其 ...

  5. AutoIT简介

    AutoIT最初是为了帮助IT管理和维护而开发的工具,能自动完成软件的安装.由于自动化安装和自动化测试在功能需求上有许多相似之处,都要模拟用户对软件进行操作,并验证执行的结果,所以,AutoIT逐渐成 ...

  6. MS UI Automation Introduction

    MS UI Automation Introduction 2014-09-17 MS UI Automation是什么 UIA架构 UI自动化模型 UI自动化树概述 UI自动化控件模式概述 UI 自 ...

  7. Server-Side UI Automation Provider - WPF Sample

    Server-Side UI Automation Provider - WPF Sample 2014-09-14 引用程序集 自动化对等类 WPF Sample 参考 引用程序集 返回 UIAut ...

  8. Python+AutoIt实现界面工具开发

    前言 不同于Linux服务器上的命令行操作,在windows系统上用户的使用习惯还是倾向于使用有界面的工具.如果工具是命令行交互操作的方式,可能是有悖于在windows上使用的操作习惯,往往不容易推广 ...

  9. 是否使用TDD(测试驱动开发)进行UI开发

    问题 StackOverflow上有一则是否使用TDD(测试驱动开发)进行UI开发 的提问. _JacobE_问: 对于是否使用TDD进行开发UI这件事,我想了很久,但难以决定.我想听听你们的意见. ...

随机推荐

  1. mark DOwm

    https://github.com/summerscar/live2dDemo {% cq %} 人生乃是一面镜子, 从镜子里认识自己, 我要称之为头等大事, 也只是我们追求的目的! {% endc ...

  2. Dubbo实践(七)扩展点

    与JDK的SPI机制类似,Dubbo也在META-INF路径下定义了多种扩展接口.只是JDK SPI机制是Java后台帮你实现读取文件并对接具体的实现类,而Dubbo是自己去读文件. 扩展点配置 扩展 ...

  3. 树莓派 4G模块 PPP 拨号 NDIS 拨号

    资料参考:树莓派使用4G模块(华为ME909s-821)亲身尝试的可行方法(上)

  4. [iOS]为git设置代理

    查看本地git配置信息 git config --global -e 查看自己***的代理地址和端口信息 为git添加代理 git config --global http.proxy https:/ ...

  5. 数组的定义和使用,理解多维数组和Array类

    数组的作用 在执行程序的过程中,通常会需要存储大量数据.如果只有少量数据,那么通过声明变量,存储到变量中即可.但当我们的数据是20个.40个甚至是100以上时,就意味着需要声明很多变量,这是不现实的, ...

  6. shell习题第3题:统计内存大小

    [题目要求] 写一个脚本计算一下linux系统所有进程占用内存的大小的和 [核心要点] ps命令用法 for循环 加法运算 [脚本] #!/bin/bash for n in `ps aux | gr ...

  7. Node.js——fs模块(文件系统),创建、删除目录(文件),读取写入文件流

    /* 1. fs.stat 检测是文件还是目录(目录 文件是否存在) 2. fs.mkdir 创建目录 (创建之前先判断是否存在) 3. fs.writeFile 写入文件(文件不存在就创建,但不能创 ...

  8. php面试题,百度答案

    一公司: 1.@当将其放置在一个PHP表达式之前有什么作用? 2.用foreach把$arr=array(1,2,3,4)每个values值乘2输出: 3.PHP定界符如何使用? 4.说出mysql_ ...

  9. Homebrew(brew)安装MySQL成功后无法登录

    Homebrew简称brew,OSX上的软件包管理工具,在Mac终端可以通过brew安装.更新.卸载各种软件,(简直就是神器级武器). 废话不多说,没安装brew自己去百度学习安装,这里就不多说了. ...

  10. PHP单例模式理解

    话不多说,先上代码 <?php class User{ /* * 1.创建一个存放对象的私有化静态变量 * 2.私有化克隆方法 * 3.私有化构造方法 * 4.创建实例化对象的唯一入口 * * ...