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. dotnet core 使用 PowerShell 脚本

    本文告诉大家如何在 dotnet core 通过 Host PowerShell 的方法使用 PowerShell 脚本 本文提供的方法需要在 dotnet core 2.1 和以上的版本,对于 do ...

  2. codeforces 1183F 离散化枚举 约数定理

    codeforces1183F 有技巧的暴力 传送门:https://codeforces.com/contest/1183/problem/F 题意: 给你n个数,要你从中选出最多三个数,使得三个数 ...

  3. nmap基本命令使用

    nmap 是主机探测.端口扫描.版本检测.系统检测.支持探测脚本编写.查看那个端口和开着啥 telnet 8.8.8.8 可以查看ip nmap ip -p<port> 根据常用服务猜测他 ...

  4. Python正则表达式之findall疑点

    在findall中使用()进行分组时,得出的结果会优先提取分组的,比如下面这个例子 In [46]: re.findall(r"www.(baidu|163).com", &quo ...

  5. 解析crash

    命令行 1.查找 symbolicatecrash find /Applications/Xcode.app -name symbolicatecrash -type f 2.此时会出现一个路径 sy ...

  6. System类StringBuilder小结

  7. NET Core 3.1 PATCH HTTP 的使用注意事项

    使用Postman请求示例: 一.在Headers要声明请求类型Content-Type 二.body提交要使用raw,且声明为json格式传输 三.如果有authorization验证还需要带上(如 ...

  8. 前端-jQuery介绍

    目录 jQuery介绍 jQuery的优势 jQuery内容: jQuery版本 jQuery对象 jQuery基础语法 查找标签 基本选择器 层级选择器: 基本筛选器: 属性选择器: 表单筛选器: ...

  9. 机器学习——EM算法与GMM算法

    目录 最大似然估计 K-means算法 EM算法 GMM算法(实际是高斯混合聚类) 中心思想:①极大似然估计 ②θ=f(θold) 此算法非常老,几乎不会问到,但思想很重要. EM的原理推导还是蛮复杂 ...

  10. Web 3D是否需要WebAssembly?

    大家好,本文讨论了Web 3D是否需要WebAssembly,结论是: 对于使用原生3D技术的程序员,需要: 对于使用Javascript语言的前端程序员,不需要,有其它方法可以达到接近WebAssd ...