产品简介

自动测试简介

自动测试过程就是通过模拟人工操作，完成对被测试系统的输入，并且对输出进行检验的过程。自动测试是由软件代替人工操作，对被测试系统的 GUI 发出指令，模拟操作，完成自动测试过程。

● 测试脚本

自动测试，就是使用一个程序来测试另一个程序（被测试的应用系统）功能的正确性。如果用来测试的程序本身非常复杂，也需要被测试，或者编写困难，那么自动测试就失去了意义。因此，用来测试另外一个程序的程序往往是非常简单的，我们把这个程序称为“测试脚本”。 测试脚本通常在测试工具的 IDE 里执行，并且获得 IDE 的支持。

● 自动记录

当我们编写测试脚本的时候，往往发现编写脚本本身是很困难的：了解脚本的语法、了解测试过程、把测试过程转换成为测试脚本语句。自动记录，就是通过记录一个操作过程来自动获得测试脚本的过程。通过自动记录，我们就能够得到一个完善的脚本，通过修改这个脚本，我们得到更通用的测试脚本。

● 同步点

在执行测试脚本的时候，测试脚本语句的操作对象是 GUI 的对象。测试脚本通过这个对象的属性（如：名称、位置、 winclass 、 disable 等）来确定哪个对象是我们需要操作的对象。 这个查找对象的过程如果失败，意味着：第一，应用系统的响应比较慢，需要等待一段时间再进行一次定位；第二，该对象不存在。这个查找、定位对象的过程，我们称为同步点。 AutoRunner 的同步点都是隐含方式的：在操作对象的时候进行自动同步，如果同步失败会停止执行后续脚本或继续下一条脚本命令（由setStopWhenError命令控制），可以用setSynchronizationTime命令设置同步时间。

● 检查点

测试的目的是检查数据是否正确。 在测试的过程中，我们需要检查某个对象的某些属性满足某个条件。这个检查的位置和条件，我们称为检查点。在 AutoRunner 中可以添加多种检查点，包括对对象属性、数据库、文件文本、Excel表格、正则表达式、消息框文本、矩形区域文本等的数据校验。例如使用 checkProperty("objectname", "property", "期望值")来作为检查对象属性的脚本语句，它检查对象 objectname 的属性 property 是否和期望值一致。 在使用中，可以使用检查点来检验对象的各个方面属性。

● 循环参数表与数据驱动

测试脚本是针对一个测试过程的。一个测试过程往往需要众多的数据来测试。通过自动录制得到的脚本，所有的输入数据都是常数，是固定的。如果需要使用一个测试脚本测试多组数据，就需要对脚本进行参数化，把固定的常数修改为来自数据源变量。 这个过程我们称为参数化。 采用了参数化的脚本，我们称为数据驱动的模式。使用 AutoRunner 完成自动测试 : 通过录制的方式自动生成测试脚本，不需要用户通过编写测试脚本来创建；通过检查点向导来创建检查点，只面向业务，不需要手工修改脚本；自动的参数化和数据驱动支持，一步到位的创建数据驱动脚本；

AutoRunner功能测试工具简介

● AutoRunner 是自动化的功能测试工具，功能测试的目标是根据 GUI 的界面或者报表来检查软件的实际功能是否和需求定义的功能相一致。

● AutoRunner自动测试工具适用于功能测试、回归测试、系统测试、疲劳测试、组合测试、每日构建测试等，可以提高测试效率，降低测试人工成本，帮助用户找被测对象的缺陷，特别是对于一些通过手工测试很难发现的缺陷。

AutoRunner可以进行

● Windows类型对象测试，一般为用C++/Delphi/VB/C#等技术开发的桌面程序。

● IE网页对象测试，一般性的网站，比如大的门户类网站。

● Java对象测试，一般为用AWT/Swing/SWT等技术开发的桌面程序。

● Flex对象测试，一般为用Adobe公司的FlashBuilder开发工具开发的Flex网页程序。

● Silverlight对象测试，一般为用微软公司的Visual Studio开发工具开发的Silverlight网页程序。

● WPF对象测试，一般为用微软公司的Visual Studio开发工具开发的WPF桌面程序。

● QT对象测试，一般为基于诺基亚QT库开发的桌面程序。

AutoRunner特点

● 使用BeanShell语言作为脚本语言，使脚本更少，更易于理解。BeanShell语法自身也兼容Java语法。

● 采用关键字提醒、关键字高亮的技术，提高脚本编写的效率。

● 提供了强大的脚本编辑功能。

● 支持同步点。

● 支持各种需求的校验。包括对对象属性、数据库、文件文本、Excel表格、正则表达式、消息框文本、矩形区域文本等的校验。

● 支持参数化，同时支持数据驱动的参数化。

● 支持测试过程的错误提示功能。

●允许用户在某个时刻从被测试系统中获取对象各种的信息，例如：一个对话框上的按钮的名字等属性信息。

● 通过设置对象的识别权重，可以在各种情况下有效识别对象。

● AutoRunner4.2.5新增了许多命令函数，有利于测试人员进行各种功能测试，熟练掌握这些命令函数，能够让测试人员编写出更简练、更高效的测试脚本。

上海泽众软件科技有限公司

www.spasvo.com

021-31357887


上海泽众软件公司简介

● 上海泽众软件科技有限公司成立于2003年10月，公司的宗旨是通过向软件开发企业提供最优质的测试工具软件。测试解决方案和测试咨询服务，帮助国内用户提高软件的品质。我们一直致力于软件测试工具领域的探索。于2004年推出了终端自动测试引擎（Terminal AutoRunner，简称TAR）在2005年，推出了第一个测试管理工具TestCenter，TestCenter与TAR一起构成了泽众软件自动化测试解决方案。在2006年推出了自动测试工具：AutoRunner，AutoRunner与TestCenter构成了泽众软件的另外一个完整的自动化测试解决方案。经过不懈的努力，AutoRunner自动测试引擎、TestCenter得到了用户的认可和应用，表现出强大的生命力。AutoRunner测试工具、TestCenter测试管理工具已经成为测试工具软件市场的重要选择。

上海泽众软件

http://www.spasvo.com/


系统要求

在安装本软件之前请确认系统配置符合以下条件：

● 操作系统要求：Windows(32位/64位) 2000/xp/vista/2003/7/2008/10;

● IE浏览器要求：IE9、IE11;

● 内存要求：不少于128M;

● 磁盘空间要求：不少于150M剩余磁盘空间；


服务支持

● AutoRunner产品通过在线MSN、电话、电子邮件为您提供支持与服务，也可访问我们的网站 http://www.spasvo.com/。为保证服务质量，确保有效地解决用户的问题，保障用户的项目实施进度，技术支持仅向授权用户和授权试用用户提供。请您在联系泽众技术支持时，告知您的单位名称和服务代码。

技术支持

● MSN：spasvo_support@hotmail.com

● 电话：021-31357887-8022

● 电子邮件：support@spasvo.com

● 产品服务：有关培训、产品购买及试用授权方法的问题，请与销售代表联系，或联系泽众咨询热线：

● 电话：021-31357887-8015

● 电子邮件： sales@spasvo.com


● Flex程序录制不出脚本

A、请确认您申请的lic文件时是支持Flex程序的录制，如果不支持的话，是录制不了的。

B、请确认录制的控件是常用的Flex控件，对于数据表格、日期控件等不常用控件尚不支持自动化测试。

C、请确认待测试的元素是控件而不是图片，很多看上去是标准控件的元素可能其实是图片，对于这样的非常规界面AutoRunner不能录制出脚本。通过手工添加对象，查看对象的winClass 属性是否为Graphic，可以得知对象是否为图形。


● IE对象回放不通过

A、对于Win7、Vista、Windows2008等操作系统，如果有打开浏览器的操作应该调用startApplication命令而不应该用双击桌面浏览器图标的方式打开，以便能获取最高权限。

B、在回放时请确定网页已恢复到录制时状态，并且已经加载完成；

C、在执行动作后有新网页打开时，可以在后加一个sleep命令设置一个等待时间，以便等待网页被完全加载。在回放时，可以适当删减一些不必要的命令等。


● IE脚本录制时某次操作没有被记录

在录制网页脚本时，如果发现某一次点击动作没有被记录通常是由于此网页还没有被加载完整，有如下图记录面板中最后一行提示，在网页没加载完之前所有在网页中的操作都不会被记录。

当网页加载完成时，有如下图记录面板中最后一行提示。

因此，在录制网页脚本时应等待页面加载完整后才开始录制，如果网页有很多帧，在录制面板中就会多次提示页面加载完整，此时还因该查看网页状态栏中最左边是否有加载完成的提示，只有同时显示加载完整后才可录制。


● IE录制不出脚本

A、目前软件只支持IE浏览器的录制，如果你使用的浏览器不是IE，网页录制不出脚本。

B、请确认在软件安装时，杀毒软件弹出的插件拦截消息被放行，如果选择禁止的话，网页录制不出脚本。

C、请确认您申请的lic文件时是否选中了支持IE的录制，如果没有选的话，网页录制不出脚本。

D、随意打开一个网页，点击【工具】-->【管理加载项】，尝试找到下图中的项，如果没有找到那么请点击【开始】菜单，选择【运行】，然后输入 regsvr32 "C:\Program Files\Spasvo\AutoRunner\SpasvoIe.dll"

其中双引号中的动态库路径请以电脑中的实际安装路径为准，在这期间如遇杀毒软件的拦截提示请放行，当弹出注册成功的消息提示时，请重开浏览器再次尝试录制网页

如果找到上图中的项，请查看它的状态是否处于“已启用”状态，如果没有，请启用它，之后请重开浏览器再次尝试录制网页。

E、如果操作系统是Win7 、Vista或者Windows2008，则浏览器应该以右键管理员身份运行。

F、如果是Windows2003或是Windows2008服务器操作系统，由于安全级别比较高，在录制不出脚本时请打开浏览器【工具】菜单，选择【Internet选项】，如下图所示。将图中带圈的选项勾选，再重启电脑即可录制网页脚本。


● setValue命令无效

setVaule命令直接掉用对象的内置函数将值发送到控件，比如Edit控件中设置文本、滑块控件中设置滑块的位置，在对这些控件做设值操作时正常情况下有可能要触发一系列的后续动作。由于控件设计特殊等原因，它只响应键盘输入的设置操作，而对通过内置函数的设值操作不触发后续动作，因而导致接下来的脚本回放出现组件没有发现的错误。对于这种情况，解决的方法是用pressString命令替换setVaule命令。pressString对每一个字符的输入都是模拟键盘输入完成的，这样后续动作就可以正常触发，脚本正常回放。


● Silverlight 程序录制不出脚本

A、请确认您申请的lic文件时是支持Silverlight程序的录制，如果不支持的话，是录制不了的。

B、请确认录制的控件是常用的Silverlight控件，对于数据表格、日期控件等不常用控件或是复杂的第三方控件商提供的控件尚不支持自动化测试。

C、请确认待测试的元素是控件而不是图片，很多看上去是标准控件的元素可能其实是图片，对于这样的非常规界面AutoRunner不能录制出脚本。通过手工添加对象，查看对象的winClass 属性是否为Image，可以得知对象是否为图形。


● Vista、Win7、Win2008中注意事项

如果软件运行在Vista、Win7、Win2008等操作系统上，

录制：在录制之前，应用程序应以右键管理员身份运行；

回放：在回放之前，在脚本中添加startApplication命令来启动应用程序；


● 安装出错

此问题多发生在Win7操作系统上。由于软件安装时要进行各种读写操作、电脑硬件信息获取、插件的注册等，每一项操作都需要程序有最高权限，而在Win7下默认是没有最高权限的，所以安装往往会出现问题。解决方法是：右击安装包，在弹出菜单中选择以【管理员权限运行】即可。


● 表格控件的录制与回放

1、目前支持的标准表格控件类型为WindowsForms表格，Java表格，QT表格，Silverlight表格，WPF表格等，不支持Flex表格及自定义表格的录制与回放；

2、表格的录制采用手工添加对象的方式（鼠标移动到标题头上再同时按下Alt+Ctrl）将其添入对象库中，不支持自动录制操作。对表格的自动化测试脚本需手工编写，相关的命令主要为table，具体用法请参考“脚本命令”中的table一节。

3、对于表格控件的单元格操作只支持clickControl、select、setValue、setState等操作。clickControl命令是点击单元格；select是选择带ComboBox的单元格中ComboBox中的某个索引；setValue是设置可编辑单元格中的文本；setState是设置带CheckBox的单元格中CheckBox控件的状态。


● 不能识别对象

在录制脚本时遇到这个问题，可以通过手工添加对象的方式添加没有识别的对象，在默认情况下，对于静态控件，无效控件，图片控件，自绘控件，不可编辑的文本控件，一般滚动条控件等对象在录制时都不会被记录下来，如果要对这些控件做操作，可以手工添加进对象库。


● 回放不停止或回放时间过长

回放不能停止，很大一部分是发生在脚本的串联调用过程中，由于串联调用的脚本形成了一个调用环（A脚本调用B脚本，而在B脚本中又调用了A脚本），导致回放进入死循环，解决的办法可以通过热键强行终止执行（Alt+Ctrl+Shift+S）。对于回放时间过长，有可能是执行的脚本过多导致，也有可能是执行某一句脚本失败，而软件进行了多次尝试，解决的办法是，添加ar.setStopWhenError (true)命令，使脚本执行失败时立刻停止，还可以调用setSynchronizationTime命令将时间设短一点。


● 回放对象不在对象库中

所有的回放对象在对象库中都要存在才能回放成功，如果没有则会报这个错误，此时可以手工添加对象到对象库，方法是：打开对象库；点击左下角的“增加对象”按钮；将鼠标移动到待添加的对象上方；同时按下键盘上的Ctrl和Alt键并维持1秒左右，在右下角的信息提示框中，会显示录制下来的对象，且对象已自动添加到了对象库中。


● 回放时提示找不到对象

A、回放时，应该保证被测程序当前状态和录制时的最初状态一致，如果不一致，则可能出现对象未找到的错误。

B、在一台电脑上录制脚本，在另一台电脑上回放。这种情况下，应该保证两天电脑的操作系统类型一样，电脑屏幕分辨率一致，如果不一致，则可能出现对象未找到的错误。

C、如果是在一台电脑上出现此问题，解决的方法是：新建一个脚本，手工添加刚回放不了的对象，将此时的属性与先前的属性做一个比较，着重比较权重为100的属性，查看哪些属性不一致。由于当前的版本在回放时采用智能查找对象的方式，会有针对性的将某些权重置为零，之后再次进行查找，但对象的position属性不会被置为零，所以如果这个属性不同的话，可以手工调整position属性的值，则可以回放通过。


键盘键码表

此键码表用于inputKey 、pressKey 的参数。

1、特殊键

退出键："Esc"

制表键："Tab"

大写锁定键："Caps Lock"

左上档键："Shift"

右上档键："Right Shift"

控制键："Ctrl"

换挡键："Alt"

左Windows键："Left Windows"

右Windows键："Right Windows"

Application键："Application"

回格键："Backspace"

回车键："Enter"

抓屏、系统请求键："Sys Req"

滚动锁定键："Scroll Lock"

插入键："Insert"

删除键："Delete"

起始键："Home"

结束键："End"

上页键："Page Up"

下页键："Page Down"

上箭头键："Up"

下箭头键："Down"

左箭头键："Left"

右箭头键："Right"

数码锁定键："Num Lock"

2、F功能键

F1到F12键："F1" 到 "F12"


● 录制Qt程序

在录制Qt程序之前请确认您的Lic支持Qt对象的录制，之后再按如下步骤进行：

1、在【设置】菜单中选择【QT程序】菜单项，如下图所示；

2、在弹出的对话框中选择一个待录制的Qt程序，如下图所示；

3、打开应用程序后会弹出如下配置完成的提示框，再次打开此程序时就可以录制Qt程序脚本了。

4、正常录制Qt应用程序时脚本如下图所示。


● 密码框获取不到值

对于密码形式的编辑控件，由于密码受到保护setValue往往没有值，这是正常现象，在回放时可以手工输入密码。在某些情况，密码控件对象在录制时可能也没有记录下来，此时可以通过手工添加组件的方式将其加入对象库。


● 内嵌网页不能录制脚本

对于一些内嵌网页的桌面程序，由于当前版本尚不支持内嵌网页的脚本录制，所以在网页录制时会出现不能自动识别对象和录制脚本的现象。如果要对这类网页进行自动化测试，可以先通过手工添加对象的方式(Alt+Ctrl)把待测对象加入对象库，之后手工编写测试脚本进行测试，对于大多数的网页链接和按钮使用的脚本命令通常是clickControl,对于可编辑的文本控件使用的脚本命令通常是setValue等，其他脚本的添加请详细阅读相关脚本命令。


● 校验矩形区域文本命令结果有误

A、 对于微软自带的程序，比如计算器、记事本等，微软做了特殊处理，checkRectText函数获取不到指定区域的值，建议用非微软的程序做测试，比如QTP航班订票例子。

B、 确认所要校验的矩形区域是否有文本存在，矩形区域的左上角坐标和右下角坐标都是相对于对象左上角坐标的偏移。


● 循环参数表未执行

A、检查参数表数据设计的是否正确；

B、对参数表进行的任何修改是否都已保存；

C、循环参数表的循环体脚本是否编写得当；

D、检查参数化后，回放时的实际对象在对象库中是否存在。

E、循环参数表是很高级的脚本流程设计，在编写之前请认真查看“高手进阶”的相关内容和例子。


● 参数表编辑

在循环参数表之前首先要进行参数表编辑，参数表如下图所示：

第一栏是工具栏，主要是对参数表的行列进行增加删除操作、排序操作等等。

最后一个图标是从关联的xls文件中重新载入数据，当编辑了参数表中的某个单元格时左上角会有一个 * 标记，提示保存修改，

点击菜单栏中的【文件】→【保存】或按下Ctrl+S快捷键可以保存修改，并且星号消失。

参数表“名称”这一栏可以是有意义的任何名字，它用于getFrom、putInto等命令函数的第一个参数。

在每一个单元格中双击可以对单元格进行编辑，在每一个单元格中鼠标右击可以复制单元格内容。


在进行脚本串联调用时，可能某些数据要在不同脚本之间共享，也就是参数传递。参数传递命令为getFrom、putInto，这两条命令都是ParameterData类成员函数。

● 一般性的参数传递

下面是一段计算器的脚本。前面五句做了一个加法操作，第七句是得到计算器的计算结果，第八句是用putInto命令将结果保存到名为result的变量用，变量名可以任取，其中parameterData是一个ParameterData类型的全局变量。第九句是调用Notepad.bsh记事本脚本。

记事本的脚本比较简单，第一句是从parameterData中把result的结果取出，这里调用的是getFrom命令。第三句是将结果输出到记事本中。

下面是执行计算器脚本的运行结果：

记事本中打印的内容如下：

● 参数化脚本中的参数传递

下面是一段计算器的参数化脚本。

循环参数表执行加法操作，第14句，这一句把临时变量pd保存在了ar.parameterData参数中，因为在Notepad中还会用到pd参数。第15句获得计算结果；第16句将结果保存到一个名为addResult的变量中，变量名可以是有意义的其他名字。第17句调用Notepad.bsh 保存计算结果。

下面是Notepad.bsh脚本代码（两个脚本必需在同一项目中，文本文件名称为Output.txt）

这段脚本先获取计算器和记事本的值，第三句是将表达式的值拼接起来，重新设置记事本的值。注意：这里用ar.parameterData.getFrom("???")直接获取xls表中的数据，因为在Calc脚本中ar.parameterData参数已经被赋值了。运行Calc脚本结果如下：

记事本中打印的内容如下：

注：每个脚本中用到的对象，都必须在此脚本的对象库中存在。


● 函数调用

一、在一个脚本中调用函数方法如下图所示：

二、在两个脚本中调用函数的方法如下图所示（示例中B脚本中的自定义函数被C脚本调用）：

三、调用jar包中函数的方法如下图所示：


● 记录击键

如果事先在设置菜单中勾选了【显示录制选项】，在点击录制按钮后弹出的对话框中会有【记录击键】选项，选中时录制会记录键盘所有的击键动作，在没有选中的情况下只会记录下几个比较特殊的键，比如回车键、Alt+Tab复合键等，击键命令为inputKey。在一般的录制中这个功能并不是必需的，它的作用主要是用于需要记录键盘操作的情况。因为此功能并不常用，在默认情况下没有选中，其录制和回放操作和普通的录制、回放没有区别。在手工添加inputKey命令时，输入参数请参考键盘键码表。


● 记录时间间隔

如果事先在设置菜单中勾选了【显示录制选项】，在点击录制按钮后弹出的对话框中会有【记录时间间隔】选项，选中时录制会记录每次动作到上一次动作的时间间隔，也就是会出现sleep命令，它的时间单位是毫秒。在一般的录制中这个功能并不是必需的，它的作用主要是用于需要精确记录整个录制过程的情况，回放时要求保证与录制时在时间上同步，比如在某些对时间很敏感的操作中，在某些网页的录制中（网页需要加载时间），或是在某些必需要加入延时操作的特殊场合。因为此功能并不常用，在默认情况下没有选中，其录制和回放操作和普通的录制、回放没有区别。


● 脚本参数化

一条普通脚本只能执行某个特定的动作，将脚本参数化后则可以执行不同的功能。脚本参数化之前，必需要编辑好参数表，具

体编辑方法请查看参数表编辑一节。

下面是一段简单的参数表数据。

接下来是增加参数化脚本循环体。点击菜单【编辑】→【循环参数表】或直接点击工具栏的循环参数表按钮 [image] 或在脚本编辑器中右击，会弹出如下信息面板。

他会从参数表中提取信息，注意小括号中的文字，起始列是包含在内的，而结束列被排除在外。点击确定后脚本编辑器中会添加如下循环参数表代码，这是一个循环结构的空壳，它和参数表关联，参数表中的数据都是保存在和脚本同名的xls表中的。

下面是一段简单的计算器加法操作脚本

下面是将脚本的第二句和第四句进行参数化，使它执行上面参数表中的1+7、2+9的加法操作，参数化脚本如下：

第二句实际上是将Buttn_1拆分为Buttn_和pd.getFrom("btnA")的组合，在每次循环中pd的数据都不同，第一个调用pd.getFrom("btnA")获得的值为1，第二次获取到的值为2，所以第一次循环点击的是按钮1，而第二次点击的是按钮2。第四句脚本的参数化功能类似。最后一句是输出计算结果。

结果输出如下


● 脚本的串联

脚本的串联支持不同脚本文件之间的相互调用。callScript命令为脚本串联命令，下面就以计算器为例介绍一下串联脚本的使用：

编写或录制两个脚本（名称分别为WinA.bsh、WinB.bsh）。

下面是WinA.bsh的录制内容，这段脚本是简单点击计算器按钮1、2、3。

下面是WinB.bsh的录制内容，这段脚本是简单点击计算器按钮4、5、6。

如果想在运行WinA.bsh脚本时调用WinB.bsh脚本，则在WinA.bsh里这样调用，当执行到第四句时，就会跳转到WinB脚本去执行WinB脚本的动作。

注：

A、脚本串联现只能在同一项目下的脚本之间，不支持跨项目串联脚本。

B、两个脚本可以是对同一个窗口进行，也可以操作不同的窗口。

C、脚本之间不能互调，比如在a脚本中调用了b，那么在b脚本中可以再调用c脚本，而绝不能调用a脚本，否则会使回放进入死循环，所以在脚本串联当中不能形成调用环。

D、如两个脚本是对同一个窗口进行操作，就要注意调用脚本命令的放置位置，保证调用时各对象的属性和对象库中的对象属性一致。


● 扫描JDK

可能有些软件的使用者电脑上装了不止一个版本的JDK，或者软件先前使用时电脑中装的是一个低版本，而后又装了一个更高级的版本，此时再次使用软件可能出现不能录制Java程序脚本的情况（当然，首先得确定以前是可以录制的），解决的方法是点击软件的菜单【设置】→【扫描JDK/JRE】即可，在扫描之前应先关闭所有网页和Java应用程序，当提示扫描成功时就可正常录制Java程序脚本了。


● 手工添加对象

在以下情况下可能需要手工添加对象到对象库中：

A、回放时出现某个对象在对象库中没有找到的错误；

B、由于错误修改对象属性导致回放失败；

C、某些对象在录制时不方便录制或是录制失败；

D、不想重录已有脚本，只是想增加某个或某几个新对象到对象库。

手工添加对象的两种方法：

A、录制过程中手工添加。以计算器为例，在录制中如果我们想把计算器的结果输出框对象（Edit控件）也录制下来方便我们后来设置校验点。方法是：将鼠标移到结果输出框上面，并同时按下键盘上的Ctrl和Alt键并保持一秒左右，在右下角的信息输出框中会有如下一句信息显示。

当出现此信息时，表示对象已被添加到了对象库中，在对象库中的信息如下：

B、直接在对象库中添加。同样是录制计算器的结果输出框对象。方法是：先打开对象库，在面板的左下角会有一个“增加对象”的按钮，点击之后软件会再次进入录制状态，将鼠标移到结果输出框上再同时按下键盘上的Ctrl和Alt键并保持1秒左右即可添加成功。。

注：

A、在操作时，应先将鼠标移动到要添加的对象上再同时按下键盘上的Ctrl和Alt键，这样可避免不必要的对象被记录在对象库中；

B、对象被记录所耗时间不会超过一秒，当信息输出框中显示出类似第一幅图的添加信息时表示已添加成功，所以不需要长时间按下Ctrl和Alt键；

C、有些对象只能手工记录，比如上面提到的计算器的结果输出框对象，因为它不接受输入,实际等同于一个静态的文本控件（Static），而静态控件在录制时是不会被记录的。


当前版本支持对象属性校验、数据库校验、矩形区域文本校验、消息框文本校验、文件文本校验、Excel文件校验、正则表达式校验等，插入校验命令有如下三种方式：

1、通过【编辑】菜单添加；

2、在脚本编辑器中右击添加；

3、通过工具栏添加。

所有校验命令的返回值都是一个布尔值，如果实际值和期望值相等匹配，返回结果为true，否则返回false。

● 校验属性

校验属性的脚本命令为checkProperty命令，校验属性对话框如下图所示：

第一栏中列举出了对象库中所有的对象名称，在这里选择需要校验的对象；

第二栏中列举出了此对象支持的所有属性，在这里选择需要校验的属性；

第三栏中填入期望值，这个值根据你选择的对象和属性的不同而不同，可以参考对象库中相应属性的属性值（期望值都是字符串）。

点击确定后，在脚本编辑器中光标位置处会自动添加如下一行脚本。

回放完成后会有如下信息输出。

● 校验数据库

校验数据库的脚本命令为checkDatabase命令，校验数据库对话框如下图所示：

第一栏中列举出了当前支持的数据库类型，在这里选择校验的数据库类型；

第二栏输入数据库地址、端口号、数据库名称，格式如上图所示；

第三栏输入数据库登录用户名；

第四栏输入数据库登录密码；

第五栏输入数据库查询语句；

第六栏中填入期望值。

点击确定后，在脚本编辑器中光标位置处会自动添加如下一行脚本。

回放完成后会有如下信息输出。

● 校验消息框

校验消息框的脚本命令为checkMessageBox命令，校验消息框对话框如下图所示：

第一栏中列举出了对象库中所有的窗口对象名称，在这里选择需要校验的消息窗口对象；

第二栏中填入期望值，这个值一般为消息框中的消息文本。

点击确定后，在脚本编辑器中光标位置处会自动添加如下一行脚本。

回放完成后会有如下信息输出。

● 校验矩形文本

校验矩形文本的脚本命令为checkRectText命令，校验矩形文本对话框如下图所示：

第一栏中列举出了对象库中所有的对象名称，在这里选择需要校验的对象；

第二栏中填入矩形左上角坐标（相对于对象左上角的坐标）；

第三栏中填入矩形右下角坐标（相对于对象左上角的坐标）；

第四栏中填入矩形区域文本的期望值；

点击确定后，在脚本编辑器中光标位置处会自动添加如下一行脚本。

回放完成后会有如下信息输出。

● 校验文件文本

校验文件文本的脚本命令为 checkFileText 命令，校验文件文本对话框如下图所示：

第一栏中列举出了常用文件的编码格式，在这里选择文件的编码格式；

第二栏中填入文件的全路径；

第三栏中填入待校验文本在文件中的行号；

第四栏中填入待校验文本在文件中的列号；

第五栏中填入期望值；

点击确定后，在脚本编辑器中光标位置处会自动添加如下一行脚本。

回放完成后会有如下信息输出。

● 校验Excel文件

校验Excel文件的脚本命令为checkExcelCell命令，校验Excel文件对话框如下图所示：

第一栏填入Excel文件全路径；

第二栏中填入单元格坐标；

第三栏中填入期望值；

点击确定后，在脚本编辑器中光标位置处会自动添加如下一行脚本。

回放完成后会有如下信息输出。

● 校验正则表达式

校验正则表达式的脚本命令为checkRegex命令，校验正则表达式对话框如下图所示：

第一栏中填入待校验文本；

第二栏中填入正则表达式；

点击确定后，在脚本编辑器中光标位置处会自动添加如下一行脚本。

回放完成后会有如下信息输出。


● 权重的修改

每一个对象都有很多的属性，每个属性后都附带了一个权重，对于一些很重要的属性默认的权重是100，而对于不是太重要的属性默认权重是0。当回放某个对象动作时首先会在窗口中找到这一对象，之后再与之进行各项属性比较，如果属性权重大于0，就会比较属性值，如果相等则继续下一个属性比较，如果不相等也不会马上认为这不是要找的对象（模糊识别），而是会将权重值累加，当不相等属性值的累加权重大于100时才认为对象不匹配。所以，如果一个对象的某项属性值变动了，而它的权重又是100的话，就可以通过降低权重使回放得以通过。下面以录制记事本程序为例，介绍一下权重的修改。新建一个名为test.txt的文本文档，双击打开，录制一段在记事本中输入文本的动作（比如输入文本spasvo），脚本如下：

在回放之前先，改变记事本窗口的大小，比如拉宽窗体，回放时会有如下错误：

因为此时Edit对象的宽度已经改变，而宽度的权重是100，所以回放失败。要使得回放通过，可以修改宽度属性的权重。打开对象库，在右边的树中找到名为Edit的节点并单击打开属性面版，将其中的width属性权重设为50（小于100的数值均可），关闭对象库后回放就可以成功。

在实际使用当中，也可以根据情况修改其他参数的权重，如果修改的权重项越多，回放时查找到的目标对象的准确度会越低，所以一般的回放不建议手动修改，只有在极其特殊的情况下，比如对象的某项属性会经常性动态变动而它的权重又是100时才适合使用；当然如果觉得某项属性很重要，而在对象库中的权重又是0，你也可以手动将它的权重设为100，这样在回放时此项属性也会进行匹配判断，以提高准确度。通常情况下不建议使用者手工修改权重，一是修改权重后可能会导致查找的对象有误，另一个原因是软件在回放时内部做了一些智能判断，如果第一次查找对象失败，会自动的将某一些权重设为零，再重新查找。


● activeTitle

命令含义：激活窗口。

命令参数：一个参数，输入窗口标题名称。

命令产生：手工添加，此命令和window命令不同，activeTitle激活的窗口不必在对象库中存在。

命令举例：ar.activeTitle("无标题 – 记事本");

相关命令：regexTitle


● addClassPath

命令含义：导入外部包，一般在需要调用外部包中的函数的情况下用到。

命令参数：一个参数，输入外部包全路径。

命令产生：手工添加。

命令返回：无

命令举例：addClassPath("C:\\test\\test.jar");//代码示例

相关命令：source


● callScript

● beginTime

命令含义：时间统计命令，开始记录时间统计对象。

命令参数：一个参数，时间统计对象名。

命令返回：true，表示执行成功；false，表示失败，统计时间对象名重复。

命令产生：手工添加。

命令举例：ar.beginTime("Object1");

相关命令：endTime


● callScript

命令含义：脚本串联调用命令。

命令参数：一个参数，要求输入调用脚本全名称。

命令产生：在脚本之间调用时出现此命令，手工添加或点击编辑菜单中的【调用脚本】来添加。

命令举例：ar.callScript("Win.bsh");


● captureScreen

命令含义：抓取屏幕。

命令参数：无

命令产生：手工添加，jpg图片保存在脚本目录下，以脚本名加日期的形式保存。

命令举例：ar.captureScreen();


● checkDatabase

命令含义：校验数据库。

命令参数：六个参数，第一个参数输入数据库类型，第二个参数输入数据库地址，第三个参数输入数据库访问用户名，第四个参数输入数据库访问密码，第五个参数输入数据库查询语句，第六个参数输入校验期望值。

命令产生：手工添加。

命令返回：校验成功返回true，否则返回false

命令举例：

例1，校验单个字符串返回值

ar.checkDatabase("SQL Server", "192.168.1.50:12345/mydb", "spasvo", "123", "SELECT name FROM students WHERE id=45", "Zhang san");

例2，校验数组形式的返回值

String [] strExpect = {"Zhang san", "男", "18"};

ar.checkDatabase("SQL Server", "192.168.1.50:12345/mydb", "spasvo", "123", "SELECT name, sex, age FROM students WHERE id=45", strExpect);

例3，校验二维表形式的返回值

String [][] strExpect = {{"Zhang san", "男", "18"}, {"Li si", "男", "20"}};

ar.checkDatabase("SQL Server", "192.168.1.50:12345/mydb", "spasvo", "123", "SELECT name, sex, age FROM students WHERE id > 45 AND id < 50", strExpect);

相关命令：getDatabase、modifyDatabase


● checkExcelCell

命令含义：校验Excel单元格文本。

命令参数：四个参数，第一个参数输入Excel文件全路径，第二个参数输入欲检验的sheet页（从0开始），第三个参数输入单元格行号(从0开始)，第四个参数输入单元格列号(从0开始)，第五个参数输入期望值。

命令产生：手工添加或向导添加。

命令返回：校验成功返回true，否则返回false

命令举例：ar.checkExcelCell("C:\\Test.xls", 0, 0, 0, "Spasvo");

相关命令：getExcelCell


● checkExcelColumn

命令含义：校验Excel某列文本。

命令参数：三个参数，第一个参数输入Excel文件全路径，第二个参数输入sheet页，第三个参数输入单元格列号(从0开始)，第四个参数输入期望值(字符串一维数组)。

命令产生：手工添加或向导添加。

命令返回：校验成功返回true，否则返回false

命令举例：

String [] strColumn = {"18", "18", "19"};

ar.checkExcelColumn("C:\\Test.xls", 0，2, strColumn);

相关命令：getExcelColumn


● checkExcelRow

命令含义：校验Excel某行文本

命令参数：三个参数，第一个参数输入Excel 文件全路径，第二个参数输入欲检验的sheet页（从0开始），第三个参数输入单元格行号(从0开始)，第四个参数输入期望值(字符串一维数组)。

命令产生：手工添加或向导添加。

命令返回：校验成功返回true，否则返回false

命令举例：String [] strRow = {"Name", "Sex", "Age"};

ar.checkExcelRow("C:\\Test.xls", 0, 0, strRow);

相关命令：getExcelRow


● checkExcelWhole

命令含义：校验Excel文本。

命令参数：两个参数，第一个参数输入Excel文件全路径，第二个参数输入期望值(字符串二维数组)。

命令产生：手工添加或向导添加。

命令返回：校验成功返回true，否则返回false

命令举例：

String [][] strCheck = {{"Zhang san", "男", "18"}, {"Li si", "男", "20"}};

ar.checkExcelWhole("C:\\Test.xls", strCheck);

相关命令：getExcelWhole


● checkFileText

命令含义：校验文件文本。

命令参数：五个参数，第一个参数输入文本格式，第二个参数输入文件全路径，第三个参数输入行号，第四个参数输入列号，第五个参数输入期望值。

命令产生：手工添加。

命令返回：校验成功返回true，否则返回false

命令举例：ar.checkFileText("ANSI", "c:\\test\\test.txt", 1, 1, "a");

相关命令：getFileText


● checkImage

命令含义：校验图片，对比两个图片的相似度。

命令参数：六个参数，第一个参数输入屏幕X坐标，第二个参数输入屏幕Y坐标，第三个参数输入图片宽度，第四个参数输入图片高度，第五个参数输入图片的保存地址（全路径），第六个参数输入相似度（建议填80-95直接，成功率会比较高）。

命令产生：手工添加。

命令返回：校验成功返回true，否则返回false

命令举例：ar.checkImage(70, 80, 174, 166, "C:\\Users\\Administrator\\Desktop\\test1.bmp", 80);

说明：图片获取可使用AR自带的图片对象截取工具，使用该工具可获取图片的屏幕坐标及高度宽度等信息。


● checkMessageBox

命令含义：校验消息框文本。

命令参数：两个参数，第一个参数输入消息框对象名，第二个参数输入期望值。

命令产生：手工添加。

命令返回：校验成功返回true，否则返回false

命令举例：ar.checkMessageBox("#32770_About", "T1 Application v1.0");

相关命令：getMessageBox


● checkProperty

命令含义：校验对象属性。

命令参数：三个参数，第一个参数输入对象名或对象的ObjectElement，第二个参数输入待检验属性名，第三个参数输入待检验属性的期望值。

命令产生：手工添加。

命令返回：校验成功返回true，否则返回false

命令举例：ar.window("SciCalc_计算器").checkProperty("Edit", "value", "10");

相关命令：getProperty


● checkRectText

命令含义：校验矩形文本。

命令参数：六个参数，第一个参数输入对象名或对象的ObjectElement，接下来四个参数输入待校验文本的左、顶、右、底坐标，第六个参数输入期望值。

命令产生：手工添加。

命令返回：校验成功返回true，否则返回false

命令举例：ar.window("SciCalc_计算器").checkRectText("SciCalc", 0, 0, 100, 100, "编辑");

相关命令：getRectText


● checkRegex

命令含义：校验正则表达式。

命令参数：两个参数，第一个参数输入校验文本，第二个参数输入正则表达式。

命令产生：手工添加。

命令返回：校验成功返回true，否则返回false

命令举例：ar.checkRegex("021-87888822", "\\d{3}-\\d{8}|\\d{4}-\\d{7}");


● chromeBoxCancel

使用范围：谷歌浏览器。

命令含义：弹出框点击取消。

命令参数：无参数

命令产生：手工添加。

命令返回：无返回

命令举例：ar.chromeBoxCancel();


● chromeBoxOk

使用范围：谷歌浏览器。

命令含义：弹出框点击确认。

命令参数：无参数

命令产生：手工添加。

命令返回：无返回

命令举例：ar.chromeBoxOk();


● chromeBoxText

使用范围：谷歌浏览器。

命令含义：获取弹出框文本。

命令参数：无参数

命令产生：手工添加。

命令返回：返回弹出框文本。

命令举例：String message = ar.chromeBoxText();


● clickControl

命令含义：点击窗口中的某一对象。

命令参数：四个参数，第一个参数输入对象名或对象的ObjectElement，第二、三两个参数输入点击的位置（相对对象本身的坐标，有默认值5、5），第四个参数输入点击方式（有默认值"left"）。

命令产生：点击对象（比如按钮）或菜单时出现此命令。

命令举例：ar.window("SciCalc_计算器").clickControl("Button_1", 20, 13, "left");

ar.window("SciCalc_计算器").clickControl("Button_1", 20, 13);

ar.window("SciCalc_计算器").clickControl("Button_1");

相关命令：dragControl


● clickScreen

命令含义：点击屏幕。

命令参数：三个参数，第一个参数输入点击位置的X坐标，第二个参数输入点击位置的Y坐标, 第三个参数输入点击方式（有默认值"left"）。

命令产生：手动添加。

命令举例： ar.clickScreen(10, 20, "left");

ar.clickScreen(10, 20);

相关命令：dragScreen


● closeLowLog

命令含义：关闭底层log功能。

命令参数：无。

命令产生：手动添加。

命令举例：ar.closeLowLog();

相关命令：openLowLog


● collapse

命令含义：收起某一个节点。

命令参数：五个参数，第一个参数输入对象名或对象的ObjectElement，第二个参数输入收起节点的全路径（层与层之间用\r分隔），第三、四两个参数输入点击的位置（相对对象本身的坐标，有默认值5、5），第五个参数输入点击方式（有默认值"left"）。

命令产生：在树对象中收起节点时出现此命令。

命令举例：ar.window("CabinetWClass_我的电脑").collapse("SysTreeView32", "桌面\r我的电脑\rSystem(C:)" , 20, 13, "left");

ar.window("CabinetWClass_我的电脑").collapse("SysTreeView32", "桌面\r我的电脑\rSystem(C:)" , 20, 13);

ar.window("CabinetWClass_我的电脑").collapse("SysTreeView32", "桌面\r我的电脑\rSystem(C:)");

相关命令：expand


● controlExist

命令含义：判断控件是否存在。

命令参数：一个参数，输入对象库中存在的待检查控件的对象名或控件的ObjectElement

命令产生：手工添加。

命令返回：存在返回true，否则返回false

命令举例：ar.window("SciCalc_计算器").controlExist("Button_1");

相关命令：menuExist、windowExist


● dragControl

命令含义：在对象上拖拉。

命令参数：六个参数，第一个参数输入对象名或对象的ObjectElement，第二、三个参数输入鼠标按下的位置（相对对象本身的坐标），第四、五个参数输入鼠标弹起的位置（相对对象本身的坐标），第六个参数输入拖拉方式（有默认值"left"）。

命令产生：在鼠标拖拉时出现此命令。

命令举例：ar.window("SciCalc_计算器").dragControl("SciCalc_计算器", 51, 170, 50, 196, "left");

ar.window("SciCalc_计算器").dragControl("SciCalc_计算器", 51, 170, 50, 196);

相关命令：clickControl


● dragScreen

命令含义：在屏幕上拖拉。

命令参数：五个参数，第一、二个参数输入鼠标按下的位置（相对屏幕本身的坐标），第三、四个参数输入鼠标弹起的位置（相对屏幕本身的坐标），第五个参数输入拖拉方式（有默认值"left"）。

命令产生：手动添加。

命令举例：ar.dragScreen(51, 170, 50, 196, "left");

ar.dragScreen(51, 170, 50, 196);

相关命令：clickScreen


● callScript

● endTime

命令含义：时间统计命令，记录该统计时间对象的从beginTime调用后到当前的时间差,并打印统计信息到输出界面。

命令参数：一个参数，时间统计对象名。

命令返回：指定时间统计对象的统计时间，单位毫秒；没有该对象则返回0。

命令产生：手工添加。

命令举例：

ar.beginTime("Object1"); //1、开始统计Object1

…… //2、其他脚本语句

ar.endTime("Object1"); //3、返回Object1从1到3的执行时间

…… //4、其他脚本语句

ar.endTime("Object1"); //5、返回Object1从1到5的执行时间

相关命令：beginTime


● expand

命令含义：展开某一个节点。

命令参数：五个参数，第一个参数输入对象名或对象的ObjectElement，第二个参数输入展开节点的全路径（层与层之间用\r分隔），第三、四两个参数输入点击的位置（相对对象本身的坐标，有默认值5、5），第五个参数输入点击方式（有默认值"left"）。

命令产生：在树对象中展开节点时出现此命令。

命令举例：ar.window("CabinetWClass_我的电脑").expand("SysTreeView32", "桌面\r我的电脑\rSystem(C:)" , 20, 13, "left");

ar.window("CabinetWClass_我的电脑").expand("SysTreeView32", "桌面\r我的电脑\rSystem(C:)" , 20, 13);

ar.window("CabinetWClass_我的电脑").expand("SysTreeView32", "桌面\r我的电脑\rSystem(C:)");

相关命令：collapse


● getCaptureScreenWhenError

命令含义：获取某句脚本执行失败时是否截屏的状态标记。

命令参数：无

命令产生：手工添加。

命令返回：脚本执行失败时会触发截屏返回true，否则返回false

命令举例：boolean b = ar.getCaptureScreenWhenError();

相关命令：setCaptureScreenWhenError


● getDatabase

命令含义：查询数据库。

命令参数：五个参数，第一个参数输入数据库类型，第二个参数输入数据库地址，第三个参数输入数据库访问用户名，第四个参数输入数据库访问密码，第五个参数输入数据库查询语句。

命令产生：手工添加。

命令返回：返回查询结果。

命令举例：

String [][] str = ar.getDatabase("SQL Server", "192.168.1.50:12345/mydb", "spasvo", "123", " SELECT name, sex, age FROM students WHERE id > 45 AND id < 50");

相关命令：checkDatabase、modifyDatabase


● getExcelCell

命令含义：获取Excel单元格文本。

命令参数：四个参数，第一个参数输入Excel文件全路径，第二个参数输入sheet页，第三个参数输入单元格行号(从0开始)，第四个参数输入单元格列号(从0开始)。

命令产生：手工添加或向导添加。

命令返回：以字符串形式返回指定单元格文本。

命令举例：String str = ar.getExcelCell("C:\\Test.xls", 0, 0,0);

相关命令：checkExcelCell


● getExcelColumn

命令含义：获取Excel某列文本。

命令参数：两个参数，第一个参数输入Excel文件全路径，第二个参数输入sheet页，第三个参数输入单元格列号(从0开始)。

命令产生：手工添加或向导添加。

命令返回：以一维字符串数组形式返回指定列文本。

命令举例：String [] str = ar.getExcelColumn("C:\\Test.xls",0， 2);

相关命令：checkExcelColumn


● getExcelRow

命令含义：获取Excel某行文本。

命令参数：两个参数，第一个参数输入Excel文件全路径，第二个参数输入sheet页，第二个参数输入单元格行号(从0开始)。

命令产生：手工添加或向导添加。

命令返回：以一维字符串数组形式返回指定行文本。

命令举例：String [] str = ar.getExcelRow("C:\\Test.xls", 0,0);

相关命令：checkExcelRow


● getExcelWhole

命令含义：获取Excel文本。

命令参数：一个参数，第一个参数输入Excel文件全路径，第二个参数输入sheet页。

命令产生：手工添加或向导添加。

命令返回：以二维字符串数组形式返回指定的Excel文件文本。

命令举例：String [][] str = ar.getExcelWhole("C:\\Test.xls"，0);

相关命令：checkExcelWhole


● getFileText

命令含义：获取文件文本。

命令参数：五个参数，第一个参数输入文本格式，第二个参数输入文件全路径，第三个参数输入行号，第四个参数输入列号， 第五个参数输入待获取的文本长度。

命令产生：手工添加。

命令返回：以String类型返回文件文本

命令举例：String str = ar.getFileText("ANSI", "c:\\test\\test.txt", 1, 1, 1);

相关命令：checkFileText


● getFrom

命令含义：ParameterData类中的成员函数，获取指定参数的值。

命令参数：一个参数，输入参数名称。

命令返回：指定参数的值，以字符串返回。

命令产生：手工添加。

命令举例：ar.parameterData.getFrom("addResult");

命令说明：此命令用于跨脚本数据传递，在一个脚本中通过putInto命令将数据保存到变量名为addResult的变量中（变量名可以任取），如下面例子所示，在另一个脚本中，调用getFrom函数，如“命令举例”所示，就可以重新获取到保存在addResult变量中的值。

相关命令：putInto


● getMessageBox

命令含义：获取消息框文本。

命令参数：一个参数，输入消息框对象名。

命令产生：手工添加。

命令返回：以String类型返回消息框文本

命令举例：String str = ar.getMessageBox("#32770_About");

相关命令：checkMessageBox


● getParameterDataList

命令含义：从xls表中获取数据列表。

命令参数：一个参数，输入当前项目中的xls文件名或不在当前项目中的全路径名。

命令返回：LinkedList 类型的数据链表。

命令产生：手工添加。

命令举例：

说明：key为Excel首列字符串

相关命令：putParameterDataList


● getProperty

命令含义：获取对象属性。

命令参数：两个参数，第一个参数输入对象名或对象的ObjectElement，第二个参数输入属性名。

命令产生：手工添加。

命令返回：以String类型返回属性文本

命令举例：String str = ar.window("SciCalc_计算器").getProperty("Edit", "value");

相关命令：checkProperty


● getRectText

命令含义：获取矩形内的文本。

命令参数：五个参数，第一个参数输入对象名或对象的ObjectElement，后四个参数依次输入矩形的左上角、右下角坐标（相对于对象的坐标）。

命令产生：手工添加。

命令返回：以String类型返回矩形内的文本

命令举例：String str = ar.window("SciCalc_计算器").getRectText("Button_1", 0, 0, 50, 20);

相关命令：checkRectText


● getStopWhenError

命令含义：获取如果运行出错是否立即停止。

命令参数：无。

命令返回：布尔值（true或false）。

命令产生：手工添加。

命令举例：boolean bStop = ar.getStopWhenError();

相关命令：setStopWhenError


● getSynchronizationTime

命令含义：获取同步时间，单位毫秒，默认3000。

命令参数：无。

命令返回：整型数值。

命令产生：手工添加。

命令举例：int iSyncTime = ar.getSynchronizationTime();

相关命令：setSynchronizationTime


● getTimeSpan

命令含义：获取两条运行命令之间的时间间隔，单位毫秒，默认500。

命令参数：无。

命令返回：整型数值。

命令产生：手工添加。

命令举例：int iSpanTime = ar.getTimeSpan();

相关命令：setTimeSpan


● getX

命令含义：得到鼠标的默认的相对水平偏移量。

命令参数：无。

命令产生：手工添加。

命令返回：整数类型的坐标值（默认时返回值为5）。

命令举例：int iPosX = ar.getX()。

相关命令：setX


● getY

命令含义：得到鼠标的默认的相对垂直偏移量。

命令参数：无。

命令产生：手工添加。

命令返回：整数类型的坐标值（默认时返回值为5）。

命令举例：int iPosY = ar.getY()。

相关命令：setY


● ieControl

情况一：

命令含义：根据条件字符串搜索IE控件。

命令参数：两个参数，第一个参数输入tagName 属性的值，第二个参数输入条件字符串。

命令产生：手工添加。

命令举例： ar.window("IEFrame_Google - Microsoft Internet Explorer").ieControl("INPUT", "className=lst");

情况二：

命令含义：在第一种情况的基础上在它的附近去查找对象，相对位置关系由最后两个参数来指定

命令参数：四个参数，第一个参数输入tagName 属性的值，第二个参数输入条件字符串， 第三第四个参数输入相对偏移量。

命令产生：手工添加。

命令举例：ar.window("IEFrame_Google - Microsoft Internet Explorer").ieControl("INPUT", "className=lst", 50, 30).clickControl();

例子解释：当执行到ieControl命令时，AutoRunner会在网页中查找tagName等于INPUT并且className等于lst的元素，找到之后再以这个元素的左上角为参考点，将x坐标偏移50个像素，y坐标偏移30个像素，获取此位置下的元素（设元素为一个按钮），接下来执行的操作都是对这个按钮的操作，这里是一个clickControl命令，鼠标就点击了按钮。

相关命令：ieWindow

第二个参数说明

一、条件字符串对空格是敏感的；

二、条件字符串格式为：属性名称=属性值，其中属性名称只能是以下几个值中的一个（最常用的是innerText name description）：

className、description、disabled、innerId、innerText、name、outerText、readOnly、type、urlLink

命令说明

ieControl命令之后还有一级命令，格式为ar.window(…).ieControl(…).XXX(…);

此处XXX类似于ar.window(…).xxx(…);XXX比xxx要少第一个参数。


● ieWindow

命令含义：激活窗口，并且窗口中必需包含指定控件。

命令参数：三个参数，第一个参数输入窗口对象名或窗口的ObjectElement，第二个参数输入指定控件tagName 属性的值，第三个参数输入指定控件的条件字符串。

命令产生：手工添加。

命令举例：ar.ieWindow("IEFrame_Google - Microsoft Internet Explorer", "INPUT", "className=lst");

相关命令：ieControl


● inputDown

命令含义：模拟键盘输入，只模拟键按下，没有模拟键弹起。

命令参数：一个参数，输入待按键的键名称。

命令产生：手工添加

命令举例：ar.inputDown("Enter");

ar.inputDown("F1");

相关命令：inputUp


● inputKey

命令含义：模拟键盘输入，按键盘上的某个键（包含按下弹起两个动作）。

命令参数：一个参数，输入待按键的键名称。

命令产生：在录制时如果没有选中“记录击键”，则只对键盘上一些特殊按键才会有这个命令出现，比如按下回车键或是Alt+Tab键等；如果选中“记录击键”，则每次进行键盘操作都会有这个命令出现。

命令举例：ar.inputKey("Enter");

ar.inputKey("Alt+Ctrl+Del");

ar.inputKey("Ctrl+S");

ar.inputKey("F1");

相关命令：pressKey


● inputString

命令含义：模拟键盘输入一串字符。

命令参数：一个参数，输入字符串。

命令产生：手动添加。

命令举例：ar.inputString("spasvo");

相关命令：pressString


● inputUp

命令含义：模拟键盘输入，只模拟键弹起，没有模拟键按下。

命令参数：一个参数，输入待按键的键名称。

命令产生：手工添加

命令举例：ar.inputUp("Enter");

ar.inputUp("F1");

相关命令：inputDown


● loadObjectElement

命令含义：加载对象库中对象，创建对象的ObjectElement。

命令参数：两个参数，第一个参数输入窗口对象名，第二个参数输入窗口中的控件对象名(如果只想获取窗口，此参数可填空)。

命令产生：手工添加。

命令返回：返回对象的ObjectElement

命令举例： ObjectElement oe = ar.loadObjectElement("SciCalc_计算器", null);

ObjectElement oe = ar.loadObjectElement("SciCalc_计算器", "");

ObjectElement oe = ar.loadObjectElement("SciCalc_计算器", "Button_1");


● menu

命令含义：激活弹出菜单。

命令参数：一个参数，输入待激活的弹出菜单对象名或菜单的ObjectElement。

命令产生：在选择某项弹出菜单时出现此命令。

命令举例：ar.menu("#32768_查看(V)");

相关命令：window


● menuExist

命令含义：判断菜单是否存在。

命令参数：一个参数，输入对象库中存在的待检查菜单的对象名或菜单的ObjectElement

命令产生：手工添加。

命令返回：存在返回true，否则返回false

命令举例：ar.menuExist("#32768_查看(V)");

相关命令：controlExist、windowExist


● modifyDatabase

命令含义：修改数据库。

命令参数：五个参数，第一个参数输入数据库类型，第二个参数输入数据库地址，第三个参数输入数据库访问用户名，第四个参数输入数据库访问密码，第五个参数输入数据库语句。

命令产生：手工添加。

命令举例：ar.modifyDatabase("SQL Server", "192.168.1.50:1433/mydb", "sa", "123456", "UPDATA students SET mark=70 WHERE id=45");

相关命令：checkDatabase、getDatabase


● mouseDowm

命令含义：按下鼠标

命令参数：一个参数，输入鼠标按下方式（有默认值"left"）。

命令产生：手工添加。

命令举例：ar.mouseDowm("left");

ar.mouseDowm();

相关命令：mouseUp


● mouseMove

命令含义：将鼠标移动到指定的对象。

情况一：对于非容器类控件

命令参数：三个参数，第一个参数输入对象名或对象的ObjectElement，第二、三两个参数输入点击的位置（相对对象本身的坐标，有默认值5、5）。

命令举例：ar.window("SciCalc_计算器").mouseMove("Button_1", 20, 13);

ar.window("SciCalc_计算器").mouseMove("Button_1");

情况二：对于容器类控件

命令参数：四个参数，第一个参数输入对象名或对象的ObjectElement，第二个参数：对于列表视图对象、列表对象、组合框对象， 输入的是选中的索引名称；对于树对象，输入的是选中的节点全路径（层与层之间用\r分隔），第三、四两个参数输入点击的位置（相对索引或节点本身的坐标，有默认值5、5）。

命令举例：ar.window("CabinetWClass_我的电脑").mouseMove("SysListView32", "textTmp.doc", 57, 11);

ar.window("CabinetWClass_我的电脑").mouseMove("SysListView32", "textTmp.doc");

ar.window("CabinetWClass_我的电脑").mouseMove("SysTreeView32", "桌面\r我的电脑\rSystem(C:)", 29, 7);

ar.window("CabinetWClass_我的电脑").mouseMove("SysTreeView32", "桌面\r我的电脑\rSystem(C:)");

命令产生：手工添加。


● mouseUp

命令含义：弹起鼠标

命令参数：一个参数，输入鼠标弹起方式（有默认值"left"）。

命令产生：手工添加。

命令举例：ar.mouseUp("left");

ar.mouseUp();

相关命令：mouseDown


● ObjectElement

类名，创建一个ObjectElement对象可以调用loadObjectElement函数。此类的相关命令函数如下（oe是一个ObjectElement类对象）：

1、getPropertyValue

命令含义：获取属性值。

命令参数：一个参数，输入属性名称。

命令产生：手动添加。

命令返回：以字符串形式返回属性值。

命令举例：String strName = oe.getPropertyValue("name");

相关命令：setPropertyValue

2、setPropertyValue

命令含义：设置属性值。

命令参数：两个参数，第一个参数输入属性名称，第二个参数输入属性值。

命令产生：手动添加。

命令举例：oe.setPropertyValue("name", "sss");

相关命令：getPropertyValue

3、getPropertyWeight

命令含义：获取属性权重。

命令参数：一个参数，输入属性名称。

命令产生：手动添加。

命令返回：以整形形式返回属性权重。

命令举例：oe.getPropertyWeight("name");

相关命令：setPropertyWeight

4、setPropertyWeight

命令含义：设置属性权重。

命令参数：两个参数，第一个参数输入属性名称，第二个参数输入属性权重。

命令产生：手动添加。

命令举例：oe.setPropertyWeight("name", 100);

相关命令：getPropertyWeight


● openLowLog

命令含义：发放底层log功能，调用此函数后，在脚本回放时将保存各种回放信息。

命令参数：无。

命令产生：手动添加。

命令举例：ar.openLowLog();

相关命令：closeLowLog


● pressKey

命令含义：向对象击键。

命令参数：五个参数，第一个参数输入对象名或对象的ObjectElement，第二个参数输入按压的键，第三、四两个参数输入点击的位置（相对对象本身的坐标，有默认值5、5），第五个参数输入点击方式（有默认值"left"）。

命令产生：手动添加。

命令举例：ar.window("CabinetWClass_我的电脑").pressKey("Edit_地址", "Enter", 10, 10, "left");

ar.window("CabinetWClass_我的电脑").pressKey("Edit_地址", "Enter", 10, 10);

ar.window("CabinetWClass_我的电脑").pressKey("Edit_地址", "Enter");

相关命令：inputKey


● pressString

命令含义：向对象输入字符串。

命令参数：五个参数，第一个参数输入对象名或对象的ObjectElement，第二个参数输入字符串，第三、四两个参数输入点击的位置（相对对象本身的坐标，有默认值5、5），第五个参数输入点击方式（有默认值"left"）。

命令产生：手动添加。

命令举例：ar.window("CabinetWClass_我的电脑").pressString("Edit_地址", "C:\\", 10, 10, "left");

ar.window("CabinetWClass_我的电脑").pressString("Edit_地址", "C:\\", 10, 10);

ar.window("CabinetWClass_我的电脑").pressString("Edit_地址", "C:\\");

相关命令：inputString


● putExcelWhole

命令含义：将内容保存到Excel表格内。

命令参数：两个参数，第一个参数输入二维数组，第二个参数输入Excel的全路径。

命令产生：手工添加或向导添加。

命令返回：操作成功返回true，操作失败返回false。

命令举例：String[][] a = {{"第一行第一列","第一行第二列"},{"第二行第一列","第二行第二列"}};

ar.putExcelWhole(a , "C:\\Users\\Administrator\\Desktop\\test.xls");

相关命令：getExcelWhole


● putInto

命令含义：ParameterData类中的成员函数，设置指定参数名的值。

命令参数：两个参数，第一个参数输入参数名称，第二个参数输入参数值。

命令产生：手工添加。

命令举例：参见下面例子。

相关命令：getFrom

命令说明：此命令用于跨脚本数据传递。

其中pd为变量名，可以更改：


● putParameterDataList

命令含义：将数据列表写入xls表中。

命令参数：两个参数，第一个参数输入LinkedList 类型的数据，第二个参数输入当前项目中的xls文件名或不在当前项目中的全路径名。

命令产生：手工添加。

命令返回：操作成功返回true，否则返回false

命令举例：

说明：V1,V2等为需要输入的字符串

相关命令：getParameterDataList


● regexTitle

命令含义：通过正则表达式匹配来激活窗口。

命令参数：一个参数，输入匹配窗口的正则表达式

命令产生：手工添加。

命令举例：ar.regexTitle(".* - Microsoft Internet Explorer");

相关命令：activeTitle


● select

命令含义：鼠标选中了某个对象，一般这样的对象在被选中后状态会改变。

命令参数：五个参数，第一个参数输入对象名或对象的ObjectElement，第二个参数：对于列表视图对象、列表对象、组合框对象， 输入的是选中的索引值；对于树对象，输入的是选中的节点全路径（层与层之间用\r分隔），第三、四两个参数输入点击的位置（相对对象本身的坐标，有默认值5、5），第五个参数输入点击方式（有默认值"left"）.

命令产生：在列表视图对象、列表对象、组合框对象、树对象中选择索引值时出现此命令。

命令举例：ar.window("CabinetWClass_doc").select("SysListView32", "textTmp.doc", 57, 11, "left");

ar.window("CabinetWClass_doc").select("SysListView32", "textTmp.doc", 57, 11);

ar.window("CabinetWClass_doc").select("SysListView32", "textTmp.doc");

ar.window("CabinetWClass_我的电脑").select("SysTreeView32", "桌面\r我的电脑\rSystem(C:)", 29, 7, "left");

ar.window("CabinetWClass_我的电脑").select("SysTreeView32", "桌面\r我的电脑\rSystem(C:)", 29, 7);

ar.window("CabinetWClass_我的电脑").select("SysTreeView32", "桌面\r我的电脑\rSystem(C:)");

相关命令：selectState


● selectState

命令含义：设置带复选框的树控件或列表控件的节点状态。

命令参数：六个参数，第一个参数输入带复选框的树控件或列表控件的对象名或窗口的ObjectElement，第二个参数输入节点名或节点路径名，第三个参数输入节点状态，第四个参数输入相对于节点左上角的x方向偏移量（默认值5），第五个参数输入相对于节点左上角的y方向偏移量（默认值5），第六个参数输入鼠标点击方式（默认值为left）

命令产生：手工添加。

命令举例： ar.window("#32770_winCheckBox").selectState("SysListView32", "item0", "true");

ar.window("#32770_winCheckBox").selectState("SysListView32", "item0", "true", 7, 11);

ar.window("#32770_winCheckBox").selectState("SysListView32", "item0", "true", 7, 11, "left");

ar.window("#32770_winCheckBox").selectState("SysTreeView32", " item0\ritem1\ritem2", "true");

ar.window("#32770_winCheckBox").selectState("SysTreeView32", " item0\ritem1\ritem2", "true", 7, 11);

ar.window("#32770_winCheckBox").selectState("SysTreeView32", " item0\ritem1\ritem2", "true", 7, 11, "left");

相关命令：setState、select


● setCaptureScreenWhenError

命令含义：设置脚本执行失败时是否截屏的状态标记。

命令参数：一个参数，输入布尔类型的值，如果为true则当脚本执行失败时会截屏，保存错误现场,如果为false则不截屏。

命令产生：手工添加。

命令举例：ar.setCaptureScreenWhenError(true);

相关命令：getCaptureScreenWhenError


● setState

命令含义：设置对象选中与否的状态。

命令参数：五个参数，第一个参数输入对象名或对象的ObjectElement，第二个参数输入状态（true或false），第三、四两个参数输入点击的位置（相对对象本身的坐标，有默认值5、5），第五个参数输入点击方式（有默认值"left"）。

命令产生：在点击单选框对象时出现此命令。

命令举例：ar.window("IEFrame_Google - Microsoft Internet Explorer").setState("INPUT_radio_ch", "true", 10, 10, "left");

ar.window("IEFrame_Google - Microsoft Internet Explorer").setState("INPUT_radio_ch", "true", 10, 10);

ar.window("IEFrame_Google - Microsoft Internet Explorer").setState("INPUT_radio_ch", "true");

相关命令：setValue、selectState


● setStopWhenError

命令含义：设置如果运行出错是否立即停止。

命令参数：一个参数，布尔类型，true表示出错停止，false表示继续下面动作。

命令产生：手工添加。

命令举例：ar.setStopWhenError(true);

相关命令：getStopWhenError


● setSynchronizationTime

命令含义：设置同步时间，在命令运行一次失败时，会等待一段时间（setTimeSpan所设置，默认500毫秒）后再次执行动作，如果执行动作的总时间超过此命令设置的时间（默认3000毫秒），就会放弃命令的执行，继续下一条命令。

命令参数：一个参数，输入同步时间（单位毫秒）。

命令产生：手工添加。

命令举例：ar.setSynchronizationTime(3000);

相关命令：getSynchronizationTime


● setTimeSpan

命令含义：设置两条运行命令之间的时间间隔。

命令参数：一个参数，输入间隔时间（单位毫秒）。

命令产生：手工添加。

命令举例：ar.setTimeSpan(1000);

相关命令：getTimeSpan


● setValue

命令含义：设置可输入文本的对象的值。

命令参数：两个参数，第一个参数输入对象名或对象的ObjectElement，第二个参数输入设置的文本。

命令产生：在向接受文本输入的对象中输入文本时出现此命令。

命令举例：ar.window("IEFrame_Google - Microsoft Internet Explorer").setValue("INPUT_text_q", "http://www.baidu.com");

相关命令：setState


● setX

命令含义：设置鼠标的默认的相对水平偏移量。

命令参数：一个参数，输入设置的X坐标。

命令产生：手工添加。

命令举例：ar.setX(10);

相关命令：getX


● setY

命令含义：设置鼠标的默认的相对垂直偏移量。

命令参数：一个参数，输入设置的Y坐标。

命令产生：手工添加。

命令举例：ar.setY(10);

相关命令：getY


● sleep

命令含义：停顿命令。

命令参数：一个参数，输入停顿时间，单位是毫秒。

命令产生：在录制时选勾选上“记录时间间隔”时，各命令之间都会出现此命令,如果没有勾选只能手工添加。

命令举例：ar.sleep(3000);


● source

命令含义：导入外部脚本文件，一般在跨脚本函数调用的情况下用到。

命令参数：一个参数，输入外部脚本文件全路径。

命令产生：手工添加。

命令返回：无

命令举例：source("C:\\test\\test.bsh");//代码示例

相关命令：addClassPath


● startApplication

命令含义：执行某个.exe程序。

命令参数：两个参数，第一个参数输入程序路径，第二个参数输入附加参数（如果无附加参数可设为空）。

命令产生：手工添加。

命令举例：ar.startApplication("C:\\WINDOWS\\system32\\regsvr32.exe", "\"C:\\Program Files\\Spasvo\\AutoRunner\\SpasvoIe.dll\"");

ar.startApplication("regedit", null);


● stopRunning

命令含义：停止回放。

命令参数：无。

命令产生：手工添加。

命令举例：ar.stopRunning();


● table

命令含义：将表格控件的指定行列滚动到可见区。

命令参数：三个参数，第一个参数输入表格对象名或表格的ObjectElement，第二个参数输入单元格的行号，第三个参数输入单元格的列号。

命令产生：手工添加。

命令举例： ar.window("WindowsForms_Form1").table("Table", 0, 0);

ar.window("WindowsForms_Form1").table("Table", 0, 0).clickControl();

命令说明

1、table命令之后还有一级命令，格式为ar.window(…).table(…).XXX(…);

2、此处XXX类似于ar.window(…).xxx(…);XXX比xxx要少第一个参数。

3、单元格的行号和列号都从0开始；

4、此命令后可以再接clickControl、setValue、select、setState等命令，分别对应普通单元格、可编辑单元格、带ComboBox控件的单元格和带CheckBox控件的单元格。


● window

命令含义：将目标窗口激活并设为前台窗口。

命令参数：两个参数，第一个参数输入待激活的窗口对象名或窗口的ObjectElement，第二个参数输入约束条件(选填，当不填时采用默认约束)。

命令产生：绝大部分脚本命令执行具体动作时都有这一句，录制时产生。

命令举例： ar.window("SciCalc_计算器");

ar.window("SciCalc_计算器", "strict");

相关命令：menu

注：约束条件有以下四种：

default ： 默认的约束条件，此条件忽略窗口的大小。

strict ： 严格的约束条件，此条件会匹配对象库中权重100的所有对象属性。

ignoreName ： 忽略窗口名字约束条件，此条件忽略窗口名字。

ignoreClass： 忽略窗口类名约束条件，此条件忽略窗口类名。


● windowExist

命令含义：判断窗口是否存在。

命令参数：一个参数，输入对象库中存在的待检查窗口的对象名或窗口的ObjectElement

命令产生：手工添加。

命令返回：存在返回true，否则返回false

命令举例：ar.windowExist("SciCalc_计算器");

相关命令：menuExist、controlExist


● getText

使用范围：谷歌浏览器。

命令含义：获取指定控件的内容（innerText）。

命令参数：一个参数，输入控件的对象名称

命令产生：手工添加。

命令返回：String类型，内容

命令举例：String text = ar.browser("Alltesting众测平台-国内专业软件云测试众包平台").getText("A_登录");


● isSelected

使用范围：谷歌浏览器。

命令含义：判断单选框或复选框是否被选择。

命令参数：一个参数，输入控件的对象名称

命令产生：手工添加。

命令返回：boolean 类型，true 或 false

命令举例：boolean boo = ar.browser("用户登录-Alltesting众测平台").isSelected("INPUT_isRecall");


● clickRow

使用范围：谷歌浏览器。

命令含义：点击网页表格指定行，三级命令。

命令参数：一个参数，输入表格的行号

命令产生：手工添加。

命令返回：无返回

命令举例：ar.browser("泽众众测").table("TBODY").clickRow(1);


● getCellValue

使用范围：谷歌浏览器。

命令含义：获取单网页单元格，三级命令。

命令参数：两个参数，输入表格的行号，输入表格的列号

命令产生：手工添加。

命令返回：String

命令举例：String text = ar.browser("泽众众测").table("TBODY").getCellValue(1,1);


● getColumn

使用范围：谷歌浏览器。

命令含义：获取列，三级命令。

命令参数：一个参数，输入表格的列号

命令产生：手工添加。

命令返回：返回数组

命令举例：String[] text = ar.browser("泽众众测").table("TBODY").getColumn(1);


● getRow

使用范围：谷歌浏览器。

命令含义：获取行，三级命令。

命令参数：一个参数，输入表格的行号

命令产生：手工添加。

命令返回：返回数组

命令举例：String[] text = ar.browser("泽众众测").table("TBODY").getRow(1);


● getWhole

使用范围：谷歌浏览器。

命令含义：获取整个表，三级命令。

命令参数：无参数

命令产生：手工添加。

命令返回：返回二维数组

命令举例：String[][] text = ar.browser("泽众众测").table("TBODY").getWhole();


● 进入本公司网站www.spasvo.com注册账户。

● 注册之后登录即可下载AutoRunner。

● 双击安装图示，按照提示安装完成，在安装的过程中由于本软件要录制网页脚本，因而加入了必需的网页插件，在安装插件时有些杀毒软件会出现拦截提示，这是正常现象，放行即可安装，如果禁止则不能正常录制网页脚本。

● AutoRunner的试用期为15天，如果想长期使用需要申请license,申请license的过程： 打开软件，点击菜单【许可证】->【申请许可证】，按工具提示进行申请。

● 将生成的req文件上传到公司网站上，我们会通过用户注册时的邮箱将license 发送至您邮箱。

● 收到license文件后在软件中点击菜单【许可证】->【导入许可证】即可。


● 【数据参数表】

参数表用在参数化脚本过程中，可以用参数表工具栏对参数表进行各种编辑，编辑后的数据以xls文件形式被保存，每一列是一次循环。

● 【参数表工具栏】

参数表工具栏用来编辑参数表，如上图所示，每一个按钮功能如下：

1、在表头插入一列数据；

2、在表尾插入一列数据；

3、删除表头的一列数据；

4、删除表尾的一列数据；

5、在表头插入一行数据；

6、在表尾插入一行数据；

7、删除表头的一行数据；

8、删除表尾的一行数据；

9、将所有的行按名称的升序排列

10、将所有的行按名称的降序排列

11、从脚本对应的xls表中重新载入数据（参数表数据都被保存在与脚本同级同名的xls表中）；

● 【对象库】

对象库中保存了所有对象的详细信息，不同对象的信息都不完全相同，在回放时就是根据这些属性来准确找到对应窗口中的控件，使之响应相应的动作。对于Windows程序来说某一个对象的属性包含如下内容。 Win对象

Java程序对象的属性包含如下内容。

网页对象的属性包含如下内容。

Flex程序对象的属性包含如下内容。

谷歌浏览器对象的属性包含如下内容。

这些属性的值和权重都可以手工编辑，方法是双击每一个要编辑的窗格即可；在不处于编辑状态时可以右击鼠标，在弹出菜单中选择复制即可复制出所在窗格的文本。面板的左边是一颗属性树，如下图所示：

每个可折叠的点都是一个窗口，节点名即是窗口对象名（不是窗口名）；其下的子节点都是窗口中的控件，节点名即是控件对象名（不是控件名）。每点击一下树中的节点，右边的属性栏中就会显示出节点的各项属性，并可以进行编辑。在节点上点击鼠标右键，可以弹出菜单，对节点名进行删除和复制操作。面板的下方是两个按钮，分别是“增加对象”和“关闭”。增加对象用于手工添加对象，具体看高级应用，关闭按钮关闭对象库，并保存所做的修改

● 【对象重命名】

对象重命名

首先，打开对象库。

需要选中对象进行重命名：

例如命名，Button_1 为myUpdateButton_1

结果如下：

关闭对象库窗口后，修改生效。

● 【对象信息】

通过菜单【工具】à【对象查看】à对象信息

通过在【抓取对象】按钮上按下鼠标左键，拖动到某接口对象上，释放左键，这时该对象信息会显示在对象信息窗口中。例如，选择我的计算器的清除按钮对象如图：

通过本功能用户抓取一个对象，包括对象的属性名称和属性值，以及这个对象所用的方法

● 【对象比较】

【工具】à【对象查看】来比较对象

通过本功能，用户可以通过选择2个对象，来显示这2个对象的属性，并比较这2个对象的属性差异，有差异部分的属性在第2个对象相应属性中用红色字体标出

A、图中表格列出用户所选对象属性：第一列名称“属性名”，表示属性名称；第二列名称“对象1属性值”，表示选中第一个对象的属性值；第三列名称“对象2属性值”，表示选中第二个对象的属性值；

B、点击“选择第一个对象”按钮不放，然后鼠标移动到需要比较的对象上释放按键，系统把该对象属性值显示在表格第二列。

C、点击“选择第二个对象” 按钮不放，然后鼠标移动到需要比较的对象上释放按键，系统把该对象属性值显示在表格第三列。

D、点击“开始比较” 按钮，系统对这2个对象的属性值进行一一对比，如有某个属性值不同，则这2个对象对应的值用红色字体显示（即在表格第二、三列）。

比较两个对象之间的属性值的不同。

● 【编辑配置文件界面功能】

本功能主要用来定义一些影响系统回放的设置信息。这些设置信息对系统中所有脚本回放都有影响，要变更具体某个脚本的这些设置信息时，可在脚本中通过命令修改来实现，通过点击 【设置】à【系统回放设置】

1、在上图“选项”中：

勾选“脚本回放时写日志文件”表示开放底层log功能，否则关闭底层log功能。勾选“脚本运行出错时立即停止”表示如果运

行出错则立即停止，否 则继续执行，勾选“脚本执行失败时截屏”表示脚本执行失败时系统截屏，否则不截屏。

2、在“播放速度”中，用户通过此拖动条来调整命令之间的执行间隔实现调节脚本回放的速度。

3、在“播放超时”中，用户可设置单个命令执行的超时时间（默认5000ms），在命令运行一次失败时，会等待一段时间（由

播放速度决定）后再次执行动作，如果执行动作的总时间超过此设置的时间，就会放弃命令的执行，继续下一条命令。 回放设置


回放脚本

回放脚本的过程，实质是对先前的录入动作的一次重复操作，只是这个过程是根据录入的脚本自动完成的。对于回放来说，不管是回放Windows程序脚本还是Java程序脚本还是IE程序脚本都基本相同。下面就以先前录入的计算器脚本为例，介绍一下回放操作及注意事项。

● 回放

脚本代码如下：

点击菜单【执行】→【开始执行】或者点击工具栏的回放按钮 [image] ，此时软件进入回放阶段，界面会被隐藏，回放的结果会在输出窗口中显示，如回放成功会有如下信息输出。

如果回放之前将计算器窗口关闭，回放后会有如下信息输出，提示执行window 动作时，计算器窗口对象没有找到。

如果回放之前在对象库中将等号的属性信息删除，回放后会有如下信息输出，提示回放clickControl 动作时，等号对象在对象库中没有发现。

● 回放日志查看

当执行完脚本后，系统保存执行结果到工作目录，此时系统自动弹出执行结果查看窗口，在该窗口用户可更友好地查看执行的结果信息。日志中需要体现检查点信息，含检查点名。执行结果查看界面以独立窗口形式展示，窗口以HTML的形式用列表显示对象的执行结果。

例如：执行Test425项目下的Test1.bsh脚本：

执行完毕后，在AutoRunner的工作空间，保存了相对应的和脚本名字相同的文件名的*.logd文件。例如：

通过菜单工具，来进行日志查看操作。

弹出如下窗口：

只能操作打开按钮，其余按钮不可操作。以下是打开Test1.logd文件。

点击打开：可展示日志信息：

脚本详细，记录详细及脚本最终的执行结果。整个脚本的执行结果：包括以下项：脚本名，运行开始时间，运行结束时间，运行结果点击记录详细的某一行脚本可同步指定到脚本详细的具体行。此时,可将当前的日志信息，另存为一个*.logd文件、保存为一个*.html网页。

操作按钮：打开文件按钮

可打开一个*.logd文件(文件格式为：规范定义的一个xml文件)，以html文件作为展示在当前的窗口。

操作按钮：保存文件按钮

将当前以html网页形式展现的日志信息，保存为以特定的xml格式的.logd文件。保存到本地可通过打开文件来加载显示日志信息。

操作按钮：保存网页按钮

将当前的日志信息，保存为本地的网页文件。(*.html)

操作按钮：播放视频按钮

当点击播放按钮时，可以播放当前脚本执行的录屏视频,例如，播放test下的test1录制视频

● 注意事项

1、回放时必须要将待回放的脚本打开，否则回放菜单和工具栏的回放按钮将不可用。

2、在编辑器中打开了多个脚本时，应确保待回放的脚本是当前编辑的脚本。

3、回放时一定要将各项状态置于录制时的初始状态，否则回放可能会失败。

4、在回放的过程中不要再操作鼠标和键盘，直至回放完成，否则回放可能会失败。

5、如果回放的脚本被手工修改过一定要及时保存，否则修改过或是被注释掉的动作在回放时会得不到体现。

6、对于回放Java程序脚本，如果控件中带有滚动条（比如树控件、列表控件等），在控件中的元素不可见的情况下对元素执行的操作可能会失败。

7、在回放时可能录制下的脚本并不能完全满足要求，比如脚本命令参数化、跨脚本回放，校验脚本、修改对象库权重等等，此时就得手动修改脚本，这些内容都属于高级应用范围，具体操作请看“高手进阶”一节。


录制脚本

Windows程序脚本录制

以录制Windows中自带的计算器为例，详细的介绍一下录制Windows程序脚本的过程。

● 创建脚本

根据前面的【工程与脚本操作】一节所述方法创建一个名为Win.bsh的脚本（脚本名可任取），双击脚本打开。

● 录制脚本

先打开要录制的计算器程序（【开始】→【运行】输入 calc 回车即可），如下图所示；

点击菜单【录制】→【开始录制】.

录制功能新增：

1、暂停当前录制

2、继续当前录制

3、录制完毕，停止录制

例如，录制一个计算器 1+2=3录制脚本为,如下图：

● 生成文件

在录制好脚本后，在项目目录下会存在如下几个文件。

第一个为脚本文件，保存了脚本编辑器中的脚本；第二个为参数表文件，是一个excel表格，所有的参数化数据都将被保存到这里，当然在我们没用到参数化时，此文件中无数据。第三个为对象库文件，是一个xml格式，前面我们看到的对象库信息会被保存到这里，对象库可以进行编辑，编辑后也会被保存下来。上面的三个文件都可以在软件中修改，不建议在软件外编辑。

Java程序脚本录制

● 如果你的电脑装了sun公司的JDK，里面会自带一些Java例子程序，我们就以自带的一个SwingSet2.jar为例，介绍一下Java程序的录制，此程序在你的JDK目录下的“demo\jfc”文件夹里。按照录制Windows程序脚本的步骤，先建好一个Java.bsh脚本，双击SwingSet2.jar，选择工具栏的最后一项，里面是一个树控件，如下图所示。

随便点击某个树节点，或是展开收起某个树节点，会有如下类似的动作脚本被记录。

第一句中有一个select动作，表示我刚点击了这棵树里面的No.1-C节点，节点的层次关系在第二个参数表示出来，层与层之间以\r分隔，在回放时如果此节点的上一级直至根节点，它们中的某些层或全部层处于收起状态，那么首先会展开收起的层然后再点击一下节点。第二句是一个收起树中节点的动作，第二个参数表示出了要收起的节点，层与层之间以\r分隔。第三句是一个展开树中节点的动作，第二个参数表示出了要展开的节点，层与层之间以\r分隔。

Java对象库元素属性参数如下图所示。

如果发现不能正常录制Java脚本，请看“常见问题”一节。

IE脚本录制

● 以录制谷歌网页（http://www.google.com.hk/）为例，详细的介绍一下录制网页脚本的过程。新建一个Google.bsh脚本，点击录制按钮，在搜索框

我们输入网址（www.qq.com），记录下来的信息将会是如下这个样子。

当点击搜索按钮后还会记录下下面几句：

停止录制时我们看到的脚本会是这个样子的：

录制下来的信息很多，但脚本却只有三句话。这是因为在录制的时候，信息框中显示的是我们键盘和鼠标的每一步动作，键盘每按下一个键都会被当成一条动作信息输出，这样录制者就知道此时软件正在监视录制动作。当录制结束后，如果录制脚本中的某一些动作能够合并，软件会将其合并为一句输出，比如这里的setValue动作，在脚本中只出现了一条。在录制的过程中，如果网页被切换到一个新窗口或是一个新的网页，比如上面点击搜索按钮后页面跳转，还会打印出两行注释信息（绿色），当要录制新网页上的内容时，应当等待网页加载完成的信息打出后再操作。

IE对象库元素属性参数如下图所示。

如果发现不能正常录制IE脚本，请看“常见问题”一节。

Flex程序脚本录制

● 运行Flex程序必须安装Adobe公司的Flash插件，AutoRunner当前版本支持常用的标准Flex控件录制。控件属性和Windows控件属性一样，下面就是一段Flex程序脚本。

Flex对象库元素属性参数如下图所示。

如果发现不能正常录制Flex脚本，请看“常见问题”一节。

Silverlight程序脚本录制

● 运行Silverlight程序必须安装微软的Silverlight插件，AutoRunner当前版本支持常用的标准Silverlight控件录制。控件属性和Windows控件属性一样，下面就是一段Silverlight程序脚本。

Silverlight对象库元素属性参数如下图所示。

如果发现不能正常录制Silverlight脚本，请看“常见问题”一节。


项目操作与脚本操作

项目操作

● 新建项目、导入项目

方式一：

新建项目

弹出新建项目对话框

如果项目限定了录制程序，为使限定有效，必须在录制前通过本功能运行录制程序，如果未执行本功能，录制被视为不限定录制程序。注意：限定了录制程序，用户只能对该程序录制，即使该程序运行了另一程序B，B程序也是不可录制的。

导入项目

方式二：

● 排除项目、删除项目、修改项目

● 修改项目

选定你要修改的项目名称，右键菜单修改：
暗暗

点击修改，可对项目名称重新设置。

最大的优点是，可以为没有指定录制程序的项目给予指定录制程序，或者给予指定好了录制程序的项目，对录制程序进行重新指定，和不指定操作。

脚本操作

● 新建脚本、导入脚本

方式一：

方式二：

● 排除脚本、删除脚本、重命名脚本

● 改变工作空间

在项目管理器中的所有项目及脚本都在同一个工作空间，如果想打开不在此工作空间的其他项目或脚本，可以通过切换工作空间来实现。操作方式：【文件】→【改变工作空间…】，见下图。

注意：在切换工作空间时，会清空当前项目管理器中的所有项目，然后才会加载新的工作空间的项目和脚本，不同工作空间中的脚本不会出现在同一项目管理器中；在第一次使用AutoRunner时会提示设定一个工作目录，如下图，默认是“我的文档”。

当点击改变工作空间时，弹出如下文件夹选择框

选择文件夹即可。


集成开发环境：

● (Integrated Development Environment 简称IDE)软件是用于程序开发环境的应用程序，一般包括代码编辑器、编译器、调试器和图形用户界面工具，也就是集成了代码编写功能、分析功能、编译功能、Debug功能等一体化的开发软件套。所有具备这一特性的软件或者软件套(组)都可以叫做IDE。如微软的Visual Studio系列，Borland的C++ Builder、Delphi系列等。

IDE环境菜单栏:

AutoRunner3.0中的菜单栏如上图所示，主菜单包含文件、编辑、录制、执行、设置、许可证、帮助等菜单项，下面对每一项做一个简介。

● 文件菜单

如上所示，所有对脚本的管理操作都可以在文件菜单下完成，包括对脚本的新建，导入，运行录制程序，保存，另存为，关闭，改变工作空间，最近打 开，退出等等。

● 编辑菜单

如上所示，所有对脚本的编辑操作都可以在编辑菜单下完成，包括对脚本的撤销，重做，查找，替换，剪切，复制，粘贴，补全代码，调用脚本，循环参数表，打印到输出，对象库，以及对各种需求的校验。

● 录制菜单

如上图所示，录制菜单比较简单，只有一个“开始录制”菜单项，用来启动脚本录制功能。

● 执行菜单

如上图所示，执行菜单包含三个菜单项，开始执行菜单启动回放脚本功能，在回放过程中如果时间比较长或是遇到问题需要提前关闭回放。当前行开始执行菜单指定的当前行启动回放脚本功能，同样，在回放过程中如果时间比较长或是遇到问题需要提前关闭回放。可以点击停止执行以提前终止。

● 当前行开始执行：

可以通过执行菜单的当前行开始执行功能，实现从脚本编辑器光标所在行开始进行回放操作。如下：

● 设置菜单

如上图所示，设置菜单中包含了系统、语言设置、扫描JDK/JRE、字号、QT程序、显示录制选项及网络许可模式等的设置，软件现在支持简体中文和英文和台湾繁文设置，在程序初次启动时，会根据系统默认语言选择初始语言类型和字号，当用户手动选择语言类别和字号时，软件再次启动才会生效。本软件自带JRE1.6，如果用户电脑上在安装了AutoRunner后又安装了其他的JDK版本，则可以点击此按钮，将AutoRunner所需要的相应文件写入JDK中，省去了用户重装AutoRunner的麻烦。

关于系统设置选项：

回放设置，可设置某些属性，如:设置播放速度，单个命令执行超时时间等。

关于QT程序设置选项：

则可设置选择需要被测的QT程序。

关于网络许可模式选项设置：

可通过对服务器IP地址和服务器端口号的设置来设置网络许可模式。

● 许可证菜单

如上图所示，许可证菜单是AutoRunner3.0新增的菜单，方便用户在软件中完成许可证的生成和导入工作，由于免费的许可证试用期为15天，当试用期过后再次使用软件后会提示LIC过期的提示，此时可以点击“申请许可证”菜单项，根据需要产生req文件，获得我公司为您配置的LIC文件后，可以点击“导入许可证”菜单项将其导入即可。

● 帮助菜单

如上图所示，帮助菜单为您提供软件使用帮助和公司产品介绍。

IDE环境工具栏:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

● 如上图所示，工具栏共有23个按钮，下面简单介绍其功能。

按钮1：新建脚本，和【文件】→【新建】→【脚本】 菜单功能一样；

按钮2：运行项目录制程序，和【文件】→【运行录制程序】 菜单功能一样；

按钮3：保存改动脚本（快捷键Ctrl+S），和【文件】→【保存】菜单功能一样；

按钮4：录制脚本，和【录制】→【开始录制】菜单功能一样；

按钮5：回放脚本，和【执行】→【开始执行】菜单功能一样；

按钮6：从指定行开始回放脚本，和【执行】→【当前行开始执行】菜单功能一样；

按钮7：停止回放脚本，和【执行】→【停止执行】菜单功能一样；

按钮8：脚本编辑时用以撤销（快捷键Ctrl+Z），和【编辑】→【撤销】菜单功能一样；

按钮9：脚本编辑时用以重做（快捷键Ctrl+Y），和【编辑】→【重做】菜单功能一样；

按钮10：脚本编辑时用以查找替换（快捷键Ctrl+F），和【编辑】→【查找/替换】菜单功能一样；

按钮11：脚本编辑时用以查找下一匹配点（快捷键F3），和【编辑】→【查找下一个】菜单功能一样；

按钮12：补全代码，和【编辑】→【补全代码】菜单功能一样；

按钮13：调用脚本，和【编辑】→【调用脚本】菜单功能一样；

按钮14：校验属性，和【编辑】→【校验属性】菜单功能一样；

按钮15：校验数据库，和【编辑】→【校验数据库】菜单功能一样；

按钮16：校验消息框文本，和【编辑】→【校验消息框】菜单功能一样；

按钮17：校验矩形文本，和【编辑】→【校验矩形文本】菜单功能一样；

按钮18：校验文件文本，和【编辑】→【校验文件】菜单功能一样；

按钮19：校验Excel文件，和【编辑】→【校验Excel文件】菜单功能一样；

按钮20：校验正则表达式，和【编辑】→【校验正则表达式】菜单功能一样；

按钮21：循环参数表，和【编辑】→【循环参数表】菜单功能一样；

按钮22：打印到输出，和【编辑】→【打印到输出】菜单功能一样；

按钮23：脚本对象库信息，和【编辑】→【对象库】菜单功能一样；

IDE环境三个区域:

● 项目管理区：创建项目，创建测试用例，进行项目浏览，切换对象浏览，在AutoRunner4.2.5中位于垂直拆分条的左边；脚本编辑区：对测试脚本编辑，在AutoRunner4.2.5中位于水平拆分条的上部；结果输出及参数表编辑：测试脚本标准输出，查看测试信息，编辑参数表，在AutoRunner4.2.5中位于水平拆分条的下部。

● 【项目管理器】

项目管理器用来显示当前 IDE 中所有的项目，并且显示项目中的脚本。项目管理器中的项目及脚本组织成一个树状结构，每一个项目名称是一个文件夹，其下的脚本都位于此文件夹下。对于每一个节点，如果是项目名称，双击可以打开；如果是脚本，则双击可以把这个脚本在编辑器中打开。树支持鼠标右键菜单，支持删除、增加等操作。

● 【脚本编辑器】

双击项目管理器中要编辑的脚本可打开脚本编辑器。编辑器可实现关键字着色，支持多行注释（/**/）及单行注释符（//），支持脚本命令自动补全（快捷键Alt+/）。如果脚本已被编辑过但还没有保存，在脚本表单中相应的脚本名称后会有一个星号提示符，提示你保存脚本，点击工具栏的保存按钮或是快捷键Ctrl+S保存后星号消失。

在编辑器中右击鼠标可以弹出如下快捷菜单，包含了一些常用的快捷操作菜单项：

● 【运行时刻的错误和输出】

在脚本执行时候显示错误和输出，可以显示脚本中所要求打印输出的语句，可以显示校验结果。若运行报错，则会显示脚本中的报错语句，方便用户找出不能正确执行原因。

● 语言支持

本软件支持：简体中文、台湾繁体、英文。

根据需要设计语言之后，重启本软件生效。

注意事项：

A、对象属性的值和权重可以编辑和复制，但名称只能复制。

B、权重一栏只接受数字输入，且范围在0到100之间。

C、修改参数一定要小心，如果修改不当可能会回放报错，也有可能导致对象重复，使回放不准确，具体修改看高级应用。


● checkExcelRow

命令含义：校验Excel某行文本。

命令参数：三个参数，第一个参数输入Excel文件全路径，第二个参数输入欲检验的sheet页（从0开始），第三个参数输入单元格行号(从0开始)，第四个参数输入期望值(字符串一维数组)。

命令产生：手工添加或向导添加。

命令返回：校验成功返回true，否则返回false

命令举例：

String [] strRow = {"Name", "Sex", "Age"};

ar.checkExcelRow("C:\\Test.xls", 0, 0, strRow);

相关命令：getExcelRow