行业资讯
📅 2026/8/7 17:12:48
UFT自动化测试
自动化测试静态自动化代码检测类似于编译工具的编译系统动态自动化基于浏览器和DOM对象的自动化selemniumSelenium测试直接运行在浏览器中就像真正的用户在操作一样。支持的浏览器包括IE(7、8、9)、Mozilla Firefox、Mozilla Suite等。这个工具的主要功能包括:测试与浏览器的兼容性--测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能--创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成Net、Java、Perl等不同语言的测试脚本。基于GUI图形用户界面Graphical User Interface简称GUI的自动化模拟用户使用行为调用api接口程序实现测试自动化uft/qtp执行重复的手动测试例如要测试哪些功能、操作步骤、输入数据和期望的输出数据等。提供符合所有主要应用软件环境的功能测试和回归测试的自动化。UFT/QTP录制支持被测系统支持B/S和C/S对象识别强对象库支持IDE强回放速度快脚本编写方便支持语言VBScript函数库支持测试结果支持与其他测试工具联动支持自身扩展弱价格昂贵1.UFT简介及脚本录制1.1简介Unified Functional TestingUFT称为统一功能测试原名为QuickTest Professional。Unified Functional Testing 11.5将HP QuickTest Professional和HP Service Test整合到一个软件包中重新起名为Unified Functional Testing。Unified Functional Testing以前称为HP QuickTest ProfessionalQTP,可为软件应用程序提供自动化功能和回归测试。HPE Unified Functional Testing支持关键字和脚本界面并具有图形用户界面。它使用Visual Basic Scripting EditionVBScript脚本语言来指定一个测试过程并操纵被测试应用程序的对象和控件。1.2脚本录制进入软件前可以勾选插件比如active Xvisual basic然后进入软件。文件-新建-测试-GUI 测试输入名字和位置录制设置录制操作会被自动录制为代码和保存对象到对象库但此时生成的代码不是描述性编程可以使用UFT自带的“Flight GUI”练习。Window(Micro Focus MyFlight Sample).Type John Window(Micro Focus MyFlight Sample).Click 218,289 Window(Micro Focus MyFlight Sample).Type HP Window(Micro Focus MyFlight Sample).Click 178,349但是实际项目中请拒绝录制。因为靠“录制”是做不了项目的甚至连一个demo都做不出来。因为自动化测试项目和软件开发项目同属软件工程学只有直接编码才能出色地根据之前的设计思想来完成脚本。如果是靠“录制加强”的模式那就不可能按照前面定制的设计方法和思想来开发测试脚本。录制功能更多的是新人学习时的利器。2.UFT录制回放原理选定对应的插件类型匹配uft中设定的对象容器如果被测对象是windows(C/S)可选择visual basicactive x目的加载要识别的对象的对象容器根据加载的对象容器利用对象定义工具进行对象的识别共有4中识别模式强制属性识别可以唯一识别的属性、辅助属性识别、序号标识符location、index、智能识别录制完成之后在“资源-对象存储库”Resources-object repository)能看到这个对象即测试对象TOTest Object。 测试对象Test ObjectTO)是UFT定义的一些类用他们代表被测应用的各种对象。(对象库中的对象)回放根据对象存储库里的TO看能不能匹配到实际的对象如果匹配不到则 对象不存在脚本无法执行匹配到才能执行。运行时对象Runtime Object,RO是实际的被测应用对象是测试执行过程中TO用来关联的对象。运行时识别的对象对象是QT(QuickTester)中操作的基本元素代表软件产品中基本的UI组件例如在WEB或Windows应用中一个菜单按钮图形热点标签输入框等都是典型的QT对象。通过多种属性的组合可以定义一个对象同样在测试环境中通过一组属性可以唯一定义一个对象QT通过对象属性在测试环境中定位一个操作的基本元素。任何一个测试脚本语句都是以一个操作对象为基础通过对操作对象测试行为控制形成测试脚本。对象库是用于储存被测应用程序界面对象界面元素的地方。QuickTester通过对象库对测试程序的元素进行管理建立测试脚本时将测试人员需要操作的对象信息保存到对象库中。QT将对象都保存在对象库这样对象可以被集中管理。测试脚本一个或多个可以根据自身也许需求随意调用这些对象来使用减少冗余。任何需要操作的对象都需要先添加到对象库中之后才能执行操作描述性编程不需要使用对象库中的对象。UFT有两种回放模式Event模式事件跟踪即平时默认的模式。比如.Click方法只是触发了对象的Click事件而并未真正通过鼠标光标来进行点击按钮Mouse模式鼠标跟踪使用这种模式回放时我们可以看到鼠标光标是跟着对象走的。有时候Click事件处理不了但鼠标点击却可以还有有时候需要使用鼠标右键。可以在Tools-Options-Web-Advanced切换也可以通过代码控制推荐比如FireEvent onclickUFT支持两种视图一种是Keyword View(关键字视图)另一种是Expert View(专家视图)。Keyword View(关键字视图)是一种图形化的视图。Expert View(专家视图)对于关键字视图中的每个节点在专家视图中都对应一行脚本。也叫脚本视图用于取得测试对象的某个属性的值。怎样切换关键字视图和专家视图3.对象探测(Object Spy)器使用参考QuickTester对象对象侦测器和对象库_weixin_30604651的博客-CSDN博客对象探测器是用来查看对象所支持的方法和属性。启动对象探测功能Tools-Object Spy…。点击指针按钮然后选择一个对象。当选择了Test Object Properties按钮属性标签页中就会显示出所有可得到的TO属性并且在方法标签页中会显示所有可获得的方法如图所示几种对象无法识别或识别错误的原因对象控件无法被UFT识别解决方法使用相对坐标然后配合WSH去定位使用DOM组件接口应用技术只适用于WEB使用QTP自定义扩展SDK Customer进行二次开发使QTP能够识别对象开发提供专属插件把无法识别的对象一起封装到一个.dll中并使用QTP调用...同一个界面中存在两个或两个以上属性相同的对象实际运行时对象发生了改变导致与对象库不匹配4.TO及RO属性获取4.1 TOTest ObjectTo属性获取的是对象的属性可以理解为静态的属性在运行时的输入东西与它无关。测试对象的属性是UFT为了识别在测试执行过程中的运行时对象而保留在对象库中的属性。GetToProperty/GetToProperties和SetToProperty则分别用于读取和修改To的属性值。GetToProperty(封装属性名) 用于取得测试对象的某个属性的值GetToProperties 用于取得测试对象的所有属性的值SetToProperty 封装属性名,封装属性值 用于设置测试对象的某个属性的值4.2 RORuntime ObjectRo属性是变的用户名框输入不同的值这个Ro属性取出来就是不一样GetRoProperty方法用于取得运行时对象实际对象的某个属性的值x为WebEdit对象运行时的value属性值x Browser().Page().WebEdit().GetROProperty(value)Msgbox xF1查看帮助文档-object model reference for GUI testing-standard window-相应的对象methods有相应的方法5.对象库UFT用对象库对对象进行管理记录的对象和这些对象的属性都存储在对象存储库中。描述性编程不需要使用对象库Resources-ObjectRepository对象是怎样被添加到对象库的?1通过录制与被测应用程序的交互过程添加有层次结构2.手工添加一个或多个对象。Resources-ObjectRepository-AddObject点击要添加的对象以手动添加对象到对象。(如果我们要添加的对象再鼠标点击后才出现我们可以先按下Ctrl键以临时屏敝对象选择模式一日往备好了要添加的对象放开Ctr键然后再去点击。如果我们需要在不同应用程序间切换可以先按住CTRLALT组合键屏蔽对象选择模式然后使用例如ALT TAB组合键来在不同的应用程序间切换完成切换后再次按下CTRLALT组合键就可以进入对象选择模式并添加对象)6.UFT检查点6.1标准检查点录制时插入不常用怎么添加标准检查的添加的检查点在 资源-对象库里面管理1.可以在这里修改value的值检查 value 是不是等于相应的值。2.也可以判断检查点此时value被改成了空格3.如果用代码的形式实现通过GetRO/GetTO此时删除了检查点6.2表格检查点如果是标准检查点选择的是默认的WebElement编辑如果是表格检查点选择WebTable有√表示检查双击把√去掉表示不检查6.3页面检查点选择想要检查的页面右键插入标准检查点选择Pageload time加载时间number of images页面中的图像个数number of links页面中的链接个数7.文本输出值7.1 图形化实现右键插入输出值运行结果7.2 编程实现8.UFT参数化登录切换到关键字视图编辑姓名/密码参数9.Data Table数据池(DataTable)提供了一种创建数据驱动驱动测试用例的方式类似于excel电子表格并可多次循环运行一个操作模块(Action)。每一个测试用例都有一个全局数据表所有的操作模块都可以访问这个全局数据表。每一个操作模块都有一个私有的数据表称谓局部数据表。9.1 UFT导入EXCEL文件1新建一个EXCEL文件存在 C:\FlightCase.xlsx2怎么用UFT从EXCEL中取数据查找DataTable.ImportSheet 参数1参数2参数3把EXcel表格中的数据导入到QTP的datatable中其中参数1为要导入的EXCEL文件的绝对路径参数2用于确定要导入的EXCEL文件的第几个sheet参数3用于确定要导入到本的datatable的第几个表中。在UFT编辑代码结果9.2 Datatable自动化测试将测试数据从excel导入自动化执行最后再将结果导出到文件。代码修改加上判断和异常执行所有测试用例结果10.UFT同步点应用当被测应用需要消耗一定的时间来响应一个操作时可能会出现应用程序控件还没有准备好脚本已经执行到了下一步了。这种情况下UFT通常就会抛出一个错误。同步点就是在测试脚本的特定执行步骤前智能地插入停顿时间或等待时间。10.1系统设定里全局的20秒同步新建或打开一个GUITest然后去File-setting-run设置objectsynchronizationtimeout默认20秒。全局设置如果超过20秒还找不到系统就会提示对象无法识别。Disable smart identification during the run session10.2 WaitWait 5 等待五秒钟10.3 WaitPropertyWaitProperty(属性名称,“属性值”,超时时间ms)返回类型为boole类型True或False比如:object.WaitProperty(textInsert Done,2000)比Wait灵活一些实例:等待按键被启用最多等5秒选择option1 Browser(..).Page(..).WebList(List).Select(Option1) Browser(..). Page(..).WebButton(Next).WaitProperty(Enabled,True,5000) 点击下面的按钮 Browser(..)Page(..).WebButton(Next).Click10.4 sync针对B/s结构浏览器加载情况。只有完全加载成功(load完成)后才会执行下一步操作。选择option1 Browser[..).Page(..).WebList(List).Select(Option1) 等待页面被下载 Browser(..).Sync 点击下面的按钮 Browser..)Page(..).WebButton(Next).Click11.描述性编程11.1直接应用属性描述描述对象的属性以及属性值来编程Browser(micClass:Browser).Page(micClass:Page).WebEdit(name:wd).Set UFT自动化测试优点1.节省资源空间此种方法不需要对象库里有这个对象若是存在对象库会占用资源空间2.如果是动态对象难以录制可能需要录制多个但通过编程-变量可以很简单地实现11.2Description 对象systemutil.Run url或application路径创建description对象Set强制属性识别方法2 用记事本写脚本后缀名改成.vbs, executefile文件路径11.3录制description对象实现案例修改description对象11.4描述性编程和对象库编程对比描述性编程脱离庞大的对象库识别对象时不容易出错需要维护庞大的代码脚本编写很灵活有自动化测试框架会相对简单带来的是自动化测试相对稳定对象库编程可以通过“Complete Word”、“F7”等多个方式进行高效编程对于大型项目脚本维护起来会比较方便比如对象库改名脚本自动更改、对象库智能识别、对象库合并、对象库快速编程、对象库快速更新等等经典功能使得脚本维护和编写会方便的多如果控件发生了变化那么你需要做的仅仅是维护对象库不需要去维护所有的脚本对象识别时没有描述性编程那么准确可能有时候会出错涉及到命名规范的建立否则就会乱12.UFT库函数-局部调用、全局调用库函数文件是包含VBScript脚本的纯文本格式文件用来声明方法、变量、类等。库函数文件可以用任意后缀名最常见的是VBS和TXT。库函数文件可以用来组织存放不同功能的代码它提供了在不同的UFT脚本中分享代码的方法。局部调用1. ExecuteFile在运行时动态加载库函数文件使用ExecuteFile方法。在一个Action中使用此方法时库函数文件及其内容只能在当前Action可见。本地作用域是指所有在Action中定义的作用区域不可被此Action之外所访问。2. LoadFunctionLibrary动态调用函数库LoadFunctionLibrary 方式LoadFunctionLibrary c:\iquicktest.vbs调用函数库中的q1方法Call q1全局调用关联一个全局库函数文件Test-Settings...-Resources添加库函数文件Tips多个库函数文件加载顺序是从下到上如果有两个库函数文件包含相同函数那么会使用靠近顶部的。全局作用域是UFT加载所有测试资源和测试恢复库所在测试脚本中所有的Action都可以访问。执行作用域13.环境变量环境变量是一种非常特殊的变量类型。环境变量是可以贯穿UFT Test 中的每一个 Action并可供所有 Actions 调用。这些变量值会在UFT运行过程中被初始化并且会一直持续到脚本运行完毕为止。UFT的环境一般应用于 Actions 之间的信息共享、场景恢复以及函数库。注意这里的环境变量与 windows 本身的环境变量并不是一个概念。Windows 环境变量是在本地系统上的所有程序都可访问到而 UFT环境变量只是可以在测试脚本运行时才可访问。在UFT中有三种类型的环境变量Built-inuser defined Internaluser defined external13.1Environment对象通过Environment对象可以访问到所有环境变量的值。Value属性既可用于对环境变量进行设置也可用于检索。我们可以通过此属性返回任意环境变量的值但对于用户自定义环境变量value属性只用于赋值。ExternalFileName属性返回当前已载入的外部环境变量的文件名。LoadFromFile方法载入具体的环境变量文件需要提供完整文件路径并保证XML的语法没有错误。13.2内建环境变量Built-inUFT提供的已经规定好的常用配置信息的环境变量比如当前执行的测试脚本名、测试脚本路径、操作系统类型、UFT的版本、本地机器名等。Test-Settings-Environment-built in可以查看当前可使用的内置环境变量。可以省略value简写Environmen(TestName)Environmen.Value(UserName) 获取用户名Environmen.Value(TestDir) 获取测试脚本所在绝对路径不包括后面的 \会打印到当前文件夹Environmen.Value(TestName) 获取测试脚本名称Environmen.Value(OS) 获取环境名称Environmen.Value(OSVersion) 获取环境版本1.理解用法结果2.获取当前脚本所在路径不含测试脚本文件夹结果C:\3.把当前脚本定义成一个function用记事本编辑一个文件在action中调用结果13.3用户自定义变量-内部user defined Internal用户自定义变量可以在UFT Test脚本中直接定义及保存并且可以在运行时进行动态修改。方法1. Test-Settings-Environment-用户定义设置用户定义变量然后赋值给变量13.4用户自定义变量-外部user defined external定义在外部文件中的环境变量。这些变量为只读且无法在运行时动态修改。在QTP Test脚本中可以直接通过LoadFromFile方法动态调用外部环境变量文件。使用XML文件使用ExternalFileName判断使用LoadFromFile导入。①准备好XML文件②在 Test-Settings-Environment 导入13.5 实战需求代码14.reporter对象用UFT生成报告Function VerifySQLData(ConnectionStr,sqlStr,verifyProperty,expectValue) 创建数据库连接对象 Set adoConn CreateObject(adodb.Connection) 利用数据库连接字符串打开数据库 adoConn.Open ConnectionStr 执行sql语句并返回对应的结果集 Set adoRst adoConn.Execute(sqlStr) 获取实际值 actualValue adoRst.Fields.Item(verifyProperty).Value 对比预期值和实际值 If cstr(expectValue) cstr(actualValue) Then Reporter.ReportEvent micPass,SQL_DATA_CHECK,[actualValue expectValue cstr(actualValue) ] Else Reporter.ReportEvent micFail,SQL_DATA_CHECK,[expectValue cstr(expectValue) actualValue cstr(actualValue) ] End If 关闭数据库 adoConn.Close 释放数据库对象 Set adoConn Nothing End Function结果参考QTP10的Reporter对象_kuwoleft-CSDN博客Reporter.ReportEventEventStatus,ReportStepName,Details[,ImageFilePath]ArgumentDescriptionEventStatusStatus of the Test Results step:0ormicPass:使此步骤的状态通过并将指定的消息发送到“测试结果”窗口。1ormicFail:使此步骤的状态为失败并将指定的消息发送到“测试结果”窗口。 当此步骤运行时测试失败。2ormicDone:在不影响测试的通过/失败状态的情况下向“测试结果”窗口发送消息。3ormicWarning:向“测试结果”窗口发送警告消息但不会导致测试停止运行也不会影响测试的通过/失败状态。ReportStepNameName of the step displayed in the Test Results window.Details测试结果事件的描述。 该字符串将显示在“测试结果”窗口的步骤详细信息框中。ImageFilePathOptional. Path and filename of the image to be displayed in theResults Detailstab of the Test Results window. Images in the following formats can be displayed: BMP, PNG, JPEG, and GIF.Notes:Images cannot be loaded fromQualityCenter.Including large images in the test results may impact performance.If an image is specified as a relative path, QuickTest will first search the Results folder for the image and then the search paths specified in theFolderspane of the Options dialog box.这样的话就可以在测试步骤的报告中添加截图信息例如Browser(Browser).Page(WebPage).Image(MyLogo).CaptureBitmap(MyLogo.bmp)Reporter.ReportEvent micDone, Display Logo, This is my logo, MyLogo.bmp一般在碰到错误时应该把当前屏幕截一下以便后面查看测试日志时分析和定位出错的原因例如下面的代码所示validation1Browser(WebTours).Page(WebTours).Frame(navbar).Image(Login).Exist(0) If validation1 Then Reporter.ReportEvent micPass, The Login object exists, The Login object exists Else Desktop.CaptureBitmap Fail.png,True Reporter.ReportEvent micFail, The Login object exists,The Login object doesnt exists,Fail.png End if ... validation2Browser(Web Tours).Page(Web Tours).Frame(navbar).Image(SignOff Button).Exist(0) If validation2 Then Reporter.ReportEvent micPass, The LogOut object exists, The LogOut object exists Else Desktop.CaptureBitmap Fail.png,True Reporter.ReportEvent micFail, The LogOut object exists,The LogOut object doesnt exists,Fail.png End if也可以不用report对象自定义测试报告比如生成HTML或XML的报告。15.场景恢复功能在脚本运行中可能会出现一些非预期事件、错误、程序崩溃等情况阻止脚本继续执行下去在此情况下脚本可能暂停执行直到某些界面被操作之后才会继续执行下去为了处理这一类事件因此存在场景恢复。参考引用UFT入门教程6—恢复场景管理器_weixin_33720956的博客-CSDN博客恢复场景管理器 作用对不可预知的错误进行相应的处理以保证测试能继续运行设置步骤定义中断测试运行的触发事件指定继续所需的恢复操作选择恢复后测试运行步骤输入场景的恢复信息1.点击菜单栏“资源”选择“恢复场景管理器”2.选择“新建场景”3.新建“向导”4.选择触发事件即选择触发“场景恢复”的事件错误弹窗或者是按钮对象为无法点击状态等事件5.捕获弹窗6.选择继续测试所需的恢复操作选择“键盘或鼠标操作”7.调整”恢复操作“的顺序勾选“添加另一个恢复操作”将再次进入“添加恢复操作”的界面直到该项取消勾选8.选择恢复后测试运行的操作根据实际情况自己选重复操作步骤继续下一步9.勾选“向当前测试中添加场景”则该场景将自动添加至当前测试 也可通过右键”测试“手动关联添加后结果16.UFT内置对象16.1 Crypy对象-字符串加密此对象主要是通过QTP的SetSecure函数原理来对字符串进行加密此对象仅提供Encrypy一个方法。加密字符串 Dim myVar myVar Crypt.Encrypt(Tarun Lalwani) msgbox myVarCrypt.Encrypt()方法最终返回的不是每次都相等的。此方法哪怕加密两次相同的字符串最终生成的加密内容也是不同的。例子加密密码加密前Browser(Browser).Page(Page).WinEdit(password).Set tarun加密后当使用这种安全模式脚本时密码就不会出现在测试结果里了。使用以下脚本创建一个加密字符串 sEncryptepassword Crypt.Encrypt(tarun) Browser(Browser).Page(Page).WinEdit(password).SetSecure sEncryptepassword16.2 PathFinder对象此对象主要用来查找文件的绝对路径。我们可以决定具体的文件夹作为文件搜索的相对路径并可以使用PathFinder.Locate方式搜索此文件夹下具体文件的相对路径。123.jpgabc.htmlc.jpg绝对路径就是无论从外部还是内部访问都能够通过此路径找到文件夹。比如C:/Users/a1394/Desktop/OneDrive/1/2/3.jpg而相对路径是相对于自身的其他位置的文件和路径只能通过内部访问。如果在同一目录下另一个文件使用c.jpg,那么路径就是urlc.jpg。如果我要去找3.jpg的话,就要回到父文件夹的父文件夹,也就是1,此时路径为url../../此时1文件夹和a文件夹同一级,那么就进入1然后进入2,找到3.jpg,所以最后的路径为url../../1/2/3.jpg。绝对路径就是写死的路径,缺点是换设备会出现路径找不到问题相对路径就是灵活的路径,优点是不会因为设备更换出现路径问题。例子16.3 RandomNumber对象此对象提供了一个可以在两个数值质检获取随机数的方法。Value属性是RandomNumber的默认属性因此在脚本中可省略。返回一个1-200之间的随机数X X RandomNumber.value(1,200)或者X RandomNumber(1,200)16.4 SystemUtil对象此对象用于运行或关闭一些进程。运行Run file,[params],[dir],[op],[mode]1file参数是必须输入的被运行的应用程序或者被打开的文件2params是可选参数启动应用程序所需的参数3dir是可选参数应用程序或文件的默认工作目录4op是可选参数文件打开的模式包括open、edit、explore、find、print 5种模式5mode参数是可选参数用于指定程序窗口打开时的状态。SystemUtil.Run iexplore.exeSystemUtil.Run iexplore.exe,http://www.yahoo.com关闭进程1CloseDescendentProcesses用于关闭所有由QTP打开的进程SystemUtil.CloseDescendentProcesses2CloseProcessByHwnd用于关闭包含指定句柄的窗口的进程使用windows窗口句柄关闭进程 hWnd Browser(Creationtime:0).GetROProperty(hwnd) SystemUtil.CloseProcessByHwnd hwnd3CloseProcessById用于关闭指定进程IDPID的进程SystemUtil.CloseProcessByID processID4CloseProcessByName用于关闭指定名称的进程关闭iexplore.exe进程 numClosed SystemUtil.CloseProcessByName(iexplore.exe)5CloseProcessByWndTitle用于关闭拥有指定标题的窗口的进程。使用正则表达式匹配标题关闭进程 numClosed SystemUtil.CloseProcessByWndTitle Microsoft Internet Explorer.*,True 不使用正则表达式匹配标题关闭进程 numClosed SystemUtil.CloseProcessByWndTitle Notepad16.5 WebUtil对象删除浏览器的cookie创建WebUtil对象 Dim oWebUtil Set oWebUtil CreateObject(Mercury.GUI_WebUtil) 删除cookies并销毁对象 oWebUtil.DeleteCookies Set oWebUtil Nothing17.其他Run ActionRunAction的用法如下:RunAction ActionName, [Iteration,Parameters]ActionName:调用action的名称lteration:迭代次数(onelteration和alllterations)其中onelteration是默认设置也可以用0表示alllterations也可以用1表示例子:(1)OutputRunAction(Action2,onelteration,input1,input2,output1)(2)ExitAction语句可以用来终止Action2的执行RunAction “Action2,onelteration一些操作语句:ExitAction(The result is :parameter(“output))Parameter(“name)Parameter(“output) Parameter(“Input1)Parameter(“Input2)错误处理引发错误的原因有很多例如用户输入了错误类型的值或者脚本找不到必需的文件、目录或者驱动器我们可以使用循环技术来处理错误但是VBS本身也提供了一些基本技术来进行错误的检测和处理。1、最常见的错误是运行时错误也就是说错误在脚本正在运行的时候发生是脚本试图进行非法操作的结果。例如零被作为除数。在vbs中任何运行时错误都是致命的此时脚本将停止运行并在屏幕上显示一个错误消息。你可以在脚本的开头添加OnError Resume Next这行语句告诉vbs在运行时跳过发生错误的语句紧接着执行跟在它后面的语句。发生错误时该语句将会把相关的错误号、错误描述和相关源代码压入错误堆栈。2、虽然OnErrorResumeNext语句可以防止vbs脚本在发生错误时停止运行但是它并不能真正处理错误要处理错误需要在脚本中增加一些语句用来检查错误条件并在错误发生时处理它。vbscript提供了一个err对象他有两个方法clearraise5个属性:descriptionhelpcontext helpfilenumbersourceerr对象不用引用实例可以直接使用例如:on error resume next a11 b0 ca/b if err.number0 then wscriptechoerrnumbererrdescription err.source endif 其他在脚本运行过程中屏蔽鼠标和键盘BlockInput方法用于屏蔽输入UnBlockInput方法用于解除屏蔽。可以使用这两个方法防止测试脚本运行过程中被意外的鼠标和键盘操作干扰。