1、基础代码交流贴这两周我开始学习 QTP 测试我们的 web 服务了;大体的软件使用操作流程是懂了,但具体实施起来特别是代码的组织及函数应用还有一些困难,因为自己只会 vb 没学习 vbscript,所以想和大家交流一下代码等一些基础知识;呵呵,一起学习,加强记忆与应用。1 生产随机数列第一种方法 复制内容到剪贴板 代码:Randomize 更新返回的数据 (Initialize random-number generator)Function rand(k)n = Int(k-1)* Rnd +1)rand = nEnd Function第二种方法 复制内容到剪贴板 代码:n=randomnu
2、mber.value(1,255)2 当运行到表中的某一行,自动导出表中的所有数据 复制内容到剪贴板 代码:row=datatable.getcurrentrowif row=“5“ thendatatable.export(“d:data.xml“)end if 3 复制内容到剪贴板 代码:webedit(“txtpass“).setsecure“sdsdf“如果参数化密码,可以直接在数据表中写入未加密的密码,它会自动识别,即不用把 setsecure 改为 set4 如果弹出对话框就获取上面提示信息并与表中的信息对比,不统一证明弹出的提示出错,主要用来验证 复制内容到剪贴板 代码:if b
3、rowser(“web_name“).dialog(“dialog_name“).exist(1) then如果不出现=falseerror_message=browser(“web_name“).dialog(“diaglog_name“).static(“用户密码错误!“.getRoproperty(“text“)if error_messageAction Properties 中的,input 参数栏,加入out_str 后,msgbox(parameter(“out_str“),就能正确显示参数了 20 WScript.Shell 的一些应用 复制内容到剪贴板 代码:set WshS
4、hell =CreateObject(“WScript.Shell“)WshShell.SendKeys “ENTER“ 模拟键盘进行操作WshShell.AppActivate “Calculator“ 启动应用程序21 获取对象属性名称用法: 复制内容到剪贴板 代码:GetRoProperty-从应用程序界面上获取对象属性(即,是脚本运行时,获取的对象动态属性值)例如:获取对象库中 index 属性值,似乎只能用GetToProperty,因为应用程序界面上对象没有该属性,只是QTP 为识别该对象创立的描述属性;GetToproperty-从对象库中描述对象的属性,静态值GetToProp
5、erties-获取用于标识对象的属性集;对于这个集合,有 count等属性方法22 FireEvent 的使用可以对一个对象进行更复杂的操作 复制内容到剪贴板 代码:如:FireEvent(“onfocus“) 使一个控件获取焦点FireEvent(“ondblclick“) 实现双击 /也可以在事件设定中针对该对象事件响应 23 模板的应用 复制内容到剪贴板 代码:-新建一个文本,输入一些新建 Action 时常包含的信息,然后保存为ActionTemplate.MST 文件,并复制到 QTP/dat 目录下;这样每次新建 action 都会包含固定的信息了;例如:-脚本说明-产品版本: _
6、Build( )测试员:编写日期:测试功能:脚本类型:被测试对象初始状态:进展程度:基本思路:主要功能函数:历史修改:没解决的问题:-脚本内容-24 在对象库中,两个对象有时不能通过更改属性或命名来达到两个对象完全一致的替换;在 web-mod 项目中,我在对象库里添加了一个自动含有 index 标识属性的对象,然后每次通过 SetToproperty 来改变index 值,对对象进行数据驱动,使其操作另一个对象,但脚本始终操作原先index 属性值的对象;后来,把该对象删除掉,重新添加一个不自动含有 index 标识属性的该类对象,然后,手工添加,index 标识属性,后来脚本能正常 工作了
7、,可见两次的对象属性完全一致,但形成方式不一样,导致的结果往往也不一样。25 childobject 的应用 复制内容到剪贴板 代码:childobject 可以返回界面上满足条件的对象集合,而且与对象库里是否有这些对象无关,这就可以简化对象库;返回的对象集合的 count 方法可以返回对象个数,这就可以通过下标对单个对象进行操作;在出现 index 标识对象时可以进行运用如:Set m_WinCheck=Description.Create()m_WinCheck(“nativeclass“).Value=“Button“set All_WinCheck=Window(“).Dialog(“
8、).Childobject(m_WinCheck)n=All_WinCheck.Count()for i=0 to n-1All_WinCheck(i).Set “ON“next以上是一些简单基础内容及我的经验心得,欢迎大家贴一些特色代码或具体应用的核心代码,谢谢!26 Create Log File: 代码:Dim LOGFile, fso, MyFileLOGFile=“C:Log.txt“Set fso = CreateObject(“Scripting.FileSystemObject“)If fso.FileExists(LOGFile) = False ThenSet MyFile
9、 = fso.CreateTextFile(LOGFile, True)MyFile.Closeend ifSet MyFile = fso.OpenTextFile(LOGFile, 8, True)MyFile.WriteLine(“)MyFile.WriteLine(“ “ & Cstr(Now) & “ -“)MyFile.WriteLine(“LOG Information!“)MyFile.Close28 数据输入输出方法 复制内容到剪贴板 代码:数据输入输出的方法:1 ExecuteFile“e:kk.vbs“2 Environment.LoadFromFile(“e:k.xml“)3 Datatable.ImportSheet/Import4 GetData from DataBase5 Datatable autofill6 Action input/output7 Use GetxxProperty to get data from Object8 Use Some Function to Product data。