AutoIT是一款非常强大的免费功能自动化测试工具,使用它可以轻松实现web和winform的自动化测试。其脚本语言AU3语法类似于VB语言和vbs脚本语言,对于经常使用QTP的童鞋来说,非常容易上手。以下是一个使用autoit测试web登录的一个实例。
   首先先介绍一下待测网站。待测网站是一个彩铃制作网站,用户可通过首页进行登录,点击首页登录链接之后页面会弹出登录框。用户输入登录信息并点击登录按钮之后,登录框消失,网站首页右上角显示用户已登录。
   下面贴出脚本:
#Include <IE.au3>
#Include<ScreenCapture.au3>
#Include<BaseOp.au3>
Global $hBmp
Global $test
Global $result
Global $isobj=False
Global $timer=1
Global $OIE = _IECreate("http://192.168.85.36/web",0,1,1,0)
Global $Tester="13200000001"
Global $TesterPWD="123456"
_IELoadWait($OIE)
Sleep(2000)
Local $Login=_IELinkClickByText($OIE,"登录")
_IELoadWait($OIE)
While Not $isobj
   If $timer>=3 Then
      SetError("2")
   ExitLoop
   EndIf
   $timer+=1
   Local $Inputname = _IEGetObjByName($OIE,"txtPhoneNum")
   Local $Inputpassword = _IEGetObjByName($OIE,"txtPassword")
   If Not IsObj($Inputname)Or Not IsObj($Inputpassword) Then
   Sleep(2000)
   Else
   $isobj=True
   $Inputname.value=$Tester
   $Inputpassword.value=$TesterPWD
   EndIf
   WEnd
Local $Inputcheck= _IEGetObjByName($OIE,"txtRadomPicCode")
If Not IsObj($Inputcheck) Then
$test= CaptureScreen("C:\Documents and Settings\aslandhu\桌面\autoit3","CheckCodeError")
$spans=_IETagNameGetCollection($OIE,"span")
if $spans(0).innertext==("用户"&$Tester) Then   ;务必要注意这里span属性innertext的访问方式
   SetError("5")
Else
   SetError("4")
   EndIf
Else
$checkCode=InputBox("提示","请输入验证码:")
$Inputcheck.value=$checkCode
Local $btn= _IEGetObjByName($OIE,"btnSubmitLogin")
_IEAction($btn,"Click")
_IELoadWait($OIE)
Local $Loginwrap = _IEGetObjById($OIE,"Loginwrap")
_IELoadWait($OIE)
If Not IsObj($Loginwrap) Then
   SetError("3")
Else
   SetError("1")
EndIf
EndIf
Switch @error
   Case 1
   $result="成功"
   Case 2
   $result="登录框上的按钮不见啦"
   Case 3
   $result="抱歉,登录失败"
   Case 4
   $result="登录时,验证码输入框不存在"
   Case 5
   $result="用户已经登录了"
   Case Else
   $result="未定义的错误"
EndSwitch
MsgBox(1,"测试结果",$result)
 
现在对脚本中几个关键的地方做一些解释。
(1)在自动化测试中,因为某些原因,一些控件不能马上展现,所以在测试脚本中我们往往会加入一些等待功能,确保这些控件可以被操作,不会出现对象不存在至错的情况。这段脚本中在识别登录框中用户账号密码输入框时,增加了检查功能,当输入框不存在的时候就等待两秒,两秒后再尝试。同时设置了尝试次数3次。
 
   If $timer>=3 Then
      SetError("2")
   ExitLoop
   EndIf
 
(2)在QTP中截屏功能比较实用,在AutoIt中同样提供了截屏的API。
 
$test= CaptureScreen("C:\Documents and Settings\aslandhu\桌面\autoit3","CheckCodeError")
 
(3)在AutoIT的web自动化中,以下函数非常常见:
_IELoadWait:等待页面加载完成
_IEGetObjByName:通过名称获取对象,与此对应的还有_IEGetObjByID:通过ID获取对象
_IETagNameGetCollection:获取所有的Tagname为传入值的对象

AutoIT测试实例的更多相关文章

  1. JMeter学习-026-JMeter 分布式(远程)参数化测试实例

    以前文所述对文章详情的HTTP请求进行性能测试为例.日常实际场景中,不可能所有的人都在同时访问一篇文章,而是多人访问不同的文章,因而需要对文章编号进行参数化,以更好的模拟日常的性能测试场景.同时,因文 ...

  2. webservice测试实例

    webservice测试实例(LR8.1) 接口声明:这个接口是sina的短信服务接口,我只是用来做脚本学习使用,不会对其产生压力:希望读者也只是用来进行录制学习,而不是产生压力. 接口文档:http ...

  3. [原]在Fedora中编译Libevent测试实例

    在我的昨天的博文<[原]我在Windows环境下的首个Libevent测试实例>中介绍了在Windows环境下如何编译一个echo server例子.今天我又试了一下在Linux环境中编译 ...

  4. C++动态链接库测试实例

    前话 上一章节我导出了一个动态链接库 要使用该链接库,我们还需要该链接库对外公开的函数,即头文件 下面开始实例 测试实例 第一步--将动态链接库的dll.lib.和头文件导入项目中 文件目录如下: 项 ...

  5. Linux下简易蜂鸣器驱动代码及测试实例

    驱动代码: #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> ...

  6. 微服务架构 - 离线部署k8s平台并部署测试实例

    一般在公司部署或者真实环境部署k8s平台,很有可能是内网环境,也即意味着是无法连接互联网的环境,这时就需要离线部署k8s平台.在此整理离线部署k8s的步骤,分享给大家,有什么不足之处,欢迎指正. 1. ...

  7. WinForm中 Asp.Net Signalr消息推送测试实例

    p{ text-align:center; } blockquote > p > span{ text-align:center; font-size: 18px; color: #ff0 ...

  8. Confluence 6 从生产环境中恢复一个测试实例

    请参考 Restoring a Test Instance from Production 页面中的内容获得更多完整的说明. 很多 Confluence 的管理员将会使用生产实例运行完整数据和服务的 ...

  9. Rabbit简单测试实例

    Rabbit简单测试实例 安装环境: Yum -y install python-pip Pip install pika 生产者 1 2 3 4 5 6 7 8 9 10 11 import pik ...

随机推荐

  1. CF1214

    CF1214 C题WA3发的菜鸡还能涨分 A 发现货币面值都是倍数关系,直接暴力枚举第第一种换了多少个更新答案就好了 B 按照题意模拟 C 首先,左括号的数量不等于有括号的数量一定无解 想等的话在括号 ...

  2. 两种方法,轻松上手ConfigMap!

    属性配置文件在任何应用程序中都非常重要.它们不仅可以让应用程序具备灵活性,还能够根据文件中配置的值产生不同的功能.实际上,在staging.开发.测试.UAT或生产环境中,我们都使用属性配置文件来驱动 ...

  3. 裁剪nutch 8步骤

    裁剪nutch 8步骤

  4. hibernate 大对象类型的hibernate映射

    在 Java 中, java.lang.String 可用于表示长字符串(长度超过 255), 字节数组 byte[] 可用于存放图片或文件的二进制数据. 此外, 在 JDBC API 中还提供了 j ...

  5. DRF框架中的异常处理程序

    目录 DRF框架中自定义异常处理 一.自定义异常的原因 二.如何设置处理异常的程序 DRF框架中自定义异常处理 一.自定义异常的原因 在Django和DRF框架中都封装了很多的处理异常的程序,可以处理 ...

  6. centos服务器cpu百分之百,top查询不到之“-bash”

    把这条注释掉. [root@aaaa ~]# cat /etc/ld.so.preload #/usr/local/lib/libproc.so[root@aaaa ~]# 然后在top

  7. 初入webpack

    为什么需要构建工具? 通过caniuse我们了解到 现代浏览器对es6特性的支持程度: 由于现代浏览器对es6特性的支持度并不能说太高,为了兼容所以需要进行 es6语法的转换,除了此,三大框架的语法特 ...

  8. Django2.2 Cache缓存的设计以及几种方式的 多级或单级缓存处理

    首先照例说明一下缓存的作用以及Django中可以用到的缓存方式: 缓存的作用是用于数据项的再次加载,在设定的时间内可以无压力刷新或者再次访问该数据信息 方式一数据库缓存(Django原生的---有代码 ...

  9. FactoryMethodPattern(工厂方法模式)-----Java/.Net

    也就是工厂方法(FactoryMethod)模式允许将产品类的实例化推迟到具体的创建者子类,由创建者子类决定实例化哪一个产品类.我们同样以汽车的生产作为讲解该模式的例子,因为汽车生产从宏观上来说也是特 ...

  10. 删除资源管理器中,设备和驱动器与左侧边栏中存在的WPS网盘等图标

    存在的问题:资源管理器中,设备和驱动器与左侧边栏中存在的百度网盘和WPS网盘等图标,看着比较碍眼,所以想设置为不显示,可是软件本身不提供右键不显示或删除的功能 解决方案: 删除设备和驱动器中不想要的图 ...