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. 找不到 javax.servlet.http.HttpServletResponse 和 javax.servlet.http.HttpServletRequest 问题解决

    时隔3个月,我又回来了!在做完毕设之后,由于对此过程中学到的一些东西疏于整理,所以当再次打开我的project时有些手足无措,以至于出现一些问题也要解决好半天,我知错! 今天的问题是: 开始搜到的解决 ...

  2. 红米K20 Pro 传感器失效解决方案

    最近把Redmi K20 Pro升级到了安卓Q,用了几天,不好用,总是提示屏幕前方有遮挡,于是刷回了安卓9,但是发现重力感应传感器失效了,屏幕不会随这方向转,导航的时候看起来很难受. 网上查了一下,要 ...

  3. 【Ubuntu】查看端口占用及关闭

    1.查看已连接的服务端口 (ESTABLISHED) netstat有一个快捷键[ss] netstat -a ss -a 2.查看所有的服务端口(LISTEN,ESTABLISHED) netsta ...

  4. C# 获取控制台程序路径

  5. 基于DDD的微服务设计和开发实战

    你是否还在为微服务应该拆多小而争论不休?到底如何才能设计出收放自如的微服务?怎样才能保证业务领域模型与代码模型的一致性?或许本文能帮你找到答案. 本文是基于 DDD 的微服务设计和开发实战篇,通过借鉴 ...

  6. 最长无重复子串问题 leetcode 3

    一.代码及注释 class Solution { public: int lengthOfLongestSubstring(string s) { int n = s.size(); //字符串的长度 ...

  7. The second day of Crawler learning

    用BeatuifulSoup和Requests爬取猫途鹰网 服务器与本地的交换机制 我们每次浏览网页都是再向网页所在的服务器发送一个Request,然后服务器接受到Request后返回Response ...

  8. 【题解】多少个$1$(exBSGS)

    [题解]多少个\(1\)(exBSGS) 解方程: \[ \underbrace {1\dots1}_{n}\equiv k \mod m \] 其实就是 \[ \dfrac {10^n-1} {9} ...

  9. Python数据分析:手把手教你用Pandas生成可视化图表

    大家都知道,Matplotlib 是众多 Python 可视化包的鼻祖,也是Python最常用的标准可视化库,其功能非常强大,同时也非常复杂,想要搞明白并非易事.但自从Python进入3.0时代以后, ...

  10. 机器学习之路--Numpy

    常用代码 ndarray.dtype 数据类型必须是一样的 常用代码 import numpy #numpy读取文件 world_alcohol = numpy.genfromtxt("wo ...