如何使用AutoIT完成单机测试

发表于:2016-4-14 10:37

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:阳光温暖了心情    来源:51Testing软件测试网采编

  下面我们来介绍如何使用AutoIT完成单机程序的自动化测试。使用AutoIT完成桌面应用程序的自动化测试,最重要的是找到识别GUI对象的方法,然后调用AutoIT函数来操纵它或读取它的属性值,并与正确的结果进行比较。AutoIT内置了大量操作Windows标准控件的方法,可以满足一般应用程序的测试需求。我们还可以通过调用动态库或COM扩展的方式来扩展AutoIT的功能。
  1. 识别窗口的方法
  编写自动化脚本的时候,首先要解决的一个问题就是如何(在众多窗口中)准确识别出目标窗口。一般来说,我们常把窗口的标题(Title)作为它的识别方法。但有时候只给出窗口标题还不够,还要同时给出标题及文件(text)。要获得某个窗口的标题是件很简单的事情(大多数窗口直接就可以看到),可以使用AutoIt提供的窗口信息工具(AutoIt Window Info)抓取。大多数窗口的标题都是显而易见的,例如系统自带的记事本程序(notedad.exe),它的默认标题是“无标题-记事本”,如图所示。窗口标题及其文本是大小写敏感的,包括标点符号在内,我们必须确保它们是完全匹配的。
  AutoIt的大部分窗口函数都有窗口标题和文本参数,比如说下面的WinWaitActive函数。这个函数的功能是使脚本暂停执行并一直等到指定窗口出现且激活为止。
  WinWaitActive(“窗口标题",["窗口文本"],[超时时间])
  其中,“窗口标题”是必须指定的参数,而"窗口文本"和"超时时间"是可选参数。不过,也有些函数的窗口文本参数是必须指定的,如果想省略这个参数,只须指定空字符串("")作为参数即可。在参数窗口文本中指定一个空字符串甚至没有值(NULL),相当于告诉AutoIt任何文本都是有效的。
  下面以记事本窗口为例说明上面提到的函数的两种用法:
  WinWaitActive(“无标题-记事本")
  或
  WinWaitActive(“无标题-记事本","")
  2. 窗口句柄
  AutoIt中的变量可用来存储窗口句柄(Windows Handles)。所谓窗口句柄是指Windows自动分配给每个新创建的窗口的特殊值。窗口句柄可用来代替窗口标题参数。使用窗口句柄来代替窗口标题的好处是能够更加精确地识别窗口,例如,有时候我们会同时打开同一应用程序的多个副本,这些窗口具有完全相同的窗口标题和窗口文本,这时就可以利用窗口句柄的唯一性来准确地识别所指定的窗口。
  很多函数如WinGetHandle、WinList和GUICreate都会返回窗口句柄,示例:
  $handle=WinGetHandle(“无标题-记事本”)
  WinClose($handle)
  注意:不管当前的WinTitleMatchMode被设置为何种模式,窗口句柄始终可用。
  3. 识别控件的方法
  AutoIt提供了直接操作控件的功能。窗口上能看到的东西大多数都是以下控件中的一种:按钮、列表框、文本编辑框、静态文本等。例如,系统自带的记事本程序的主窗口也只是一个相对而言比较大的“编辑框(Edit)”控件罢了。正因为AutoIt提供了直接对控件操作的功能,我们再也不须要使用模拟键击等低级的方法来操作窗口了,这使得实现对窗口操作的脚本更加可靠。
  AutoIt主要支持标准的Microosft控件。有些应用程序使用了大量的自定义控件,很像是标准的MS控件,但却无法被脚本程序识别,就需要特别的办法来解决。
  在使用Control…()函数时,一些控件描述必须提供ControlID。通过这些描述才能正确识别控件。这些描述包括:
  ID,内部控件的ID;
  TEXT,控件文本,如"下一步"按钮;
  CLASS,内部控件的类的名称,如"Edit"或"Button";
  INSTANCE,枚举;
  CLASSNN,类别名,如"Edit1";
  以上的属性可以单独使用,也可以组合起来使用。具体使用哪一种属性,主要依据个人喜欢及从AutoIt窗口信息工具所获得的信息类型。一般而言,最好的方法就是使用控件ID,但如果控件ID无法获得或靠控件ID还不足以保证能识别目标控件,那么就须要使用其他的属性,或者属性的组合。
  例如,发送文本到记事本的第1个Edit控件:
  ControlSend(“无标题-记事本”,"","[CLASS:Edit;INSTANCE:1]”,"这是一些文本")
  或
  ControlSend(“无标题-记事本","","[CLASSNN:Edit1]”,"这是一些文本")
  或
  ControlSend(“无标题-记事本","","Edit1”,"这是一些文本")
  单击“我的窗口”里面的控件,得到控件ID 254,就可以直接使用ID:
  ControlClick(“我的窗口","","[ID:254]")
  或
  ControlClick(“我的窗口","",254)
  例如单击第2个包含“完成”文本的按钮,就使用组合方法:
  ControlClick(“我的窗口","","[CLASS:Button;TEXT:”完成";INSTANCE:2]")
  如果要获得某个控件的句柄可使用ControlGetHandle函数。控件句柄是Windows赋予控件的独一无二的标识符,即每个被创建的控件都具有不同的句柄。示例如下:
  $handle=ControlGetHandle(“Untitled- Notepad”,"","Edit1")
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号