自动化之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这件事,我想了很久,但难以决定.我想听听你们的意见. ...
随机推荐
- vim使用四个空格代替TAB键
让VIM可以在你写程序的时候自动缩进,并用4个空格代替TAB键. 编辑 ~/.vimrc 保存这四行: “set smartindent”, “set tabstop=4”, “set shiftwi ...
- Selenium自动化测试值环境搭建
Selenium自动化测试之环境搭建 一.背景介绍 自动化测试近几年在测试领域很火,出去面试要是说不会自动化测试薪资都不好意思往高了要!很多公司做敏捷测试用到自动化,其他一些公司也是跟风,即使用不上自 ...
- log4j 日志配置和jar包下载
1.日志log4j文件配置 ${webapp.root}才是项目根目录log4j.appender.logfile.File= ${catalina.home}/log/filter.log 指生成日 ...
- ora.ctssd OBSERVER
[grid@ydb1 ~]$ crsctl status res -t -init ora.ctssd 1 ONLINE ONLINE ydb1 ...
- Web—10-前端性能优化
前端性能优化 从用户访问资源到资源完整的展现在用户面前的过程中,通过技术手段和优化策略,缩短每个步骤的处理时间从而提升整个资源的访问和呈现速度.网站的性能直接会影响到用户的数量,所有前端性能优化很重要 ...
- 创建Podfile,添加类库,中途添加库指令
前提是你电脑已经安装了CocoaPods 1.打开终端 2.进入你的工程目录 cd /Users/...../CocoaPodsDemo 3. 创建Pods文件 touch Podfile 新建 ...
- 关于xib控件变成框框An internal error occurred
前段时间在进行系统适配的时候,由于在两个不同版本的Xcode之间进行了代码运行调试,导致回到老版本继续开发时xib里面所有的控件全部变成了蓝色的框框...真是哔了狗了 报错信息: an interna ...
- 关于flume的filechannel的 full 问题
事务启动以后,批量向事务Transaction的一个putList的尾部写入,putlist是一个LinkedBlockingDeque . 事务提交的时候, 把putlist中的event批量移除, ...
- linux几个重要的组合键
我们在用Windows系统时,有没有感觉快键键让我们工作更有效率,在Linux系统中仍有很好用的快捷键,这些快捷键可以辅助我们进行指令的编写与程序的中断呢,下面介绍几个经常用到的快捷键. 一.Tab- ...
- Vim Go开发环境搭建
基本搭建流程参考了网上的博文以及Vimgo的Github主页 博文https://www.cnblogs.com/breg/p/5386365.html Vim-go主页(我能不能加入项目,做点贡献呢 ...