A:脚本中原有RunAction \"testbase [case1]\把引号中的内容放到Global表中的第22行,然后将代码修改为: datatable.getsheet(\"Global\") datatable.setcurrentrow(22) strLogin=DataTable(\"ActionName\RunAction strLogin, oneIteration help中也有相关帮助,如: Syntax RunAction ActionName, [IterationMode , IterationRange , Parameters] ActionName : String : The name of the action 2.Q:QTP8.2中调用VB函数的问题(用VBscrīpt写了一些测试脚本需要的几个通用函数,有没有办法可以用类似include的方式进行调用,而不需要每次都把这些函数Copy到新的脚本中)?
A:程序开头加上ExecuteFile “..\\..\\..\\project\\DeVariable.vbs”
3.Q:QTP如何做回归测试(300多个TestCase,TD是否可以管理) ? A:TD可以实现,可以生成测试集,一个测试集可以包含若干个测试脚本 QTP8.2本身提供一个工具Test Batch Runner但是运行完没有报告。 MI有另一个工具叫MTM(multitestmanager) 4.Q:qtp自动截图功能
A:具体可参考此帖:http://www.51testing.com/cgi-bin ... d=17663&fpage=1
5.Q:在QTP中如何设置使用别的浏览器(XP系统,用IE访问程序时,每次总提示屏蔽安装ActiveX插件,需要手动安装.但把这个过程录制到QTP后,回放一次是成功的。当我给某个输入框参数化了好多数据后,回放过程中,某些就会失败.
可能有两个方面可以解决这问题1、每个动作设置延迟时间 2、设置为用别的浏览器。)
(失败的提示信息是 object not visible) A:1.延迟可用WAIT X(X单位是秒) 2.可以安装插件添加新的浏览器
SystemUtil.Run “file” “params” “dir” “op'' “mode” QTP运行可执行文件的方法及其参数
ps: 建议是用IE浏览器,或者IE内核浏览器做测试
6.Q:checkpoint 检查网页,是否能实现只要网页出现乱码就返回错误报告?
A:Text not displayed能解决问题 关于 Text Checkpoint 的总结。
1)Text Checkpoint 的检查部分分为三个部分。Checked Text 、Text Before 、Text After。在默认的情况下,Checked Text执行的是精确检查,其余两个部分执行的是模糊检查。Text Before(After)检查的内容可以比实际的内容少。但是不能有和是实际内容不相符的地方,否则就失败。
2) Exact match选项。如果选择了这个选项,三部分完全都进行精确检查。个人觉得和只检查checked Text部分没有区别。
3) Text not displayed。这个选项本质上就是一个结果取反的过程。就是把检查的结果给反过来,把pass变成Fail,Fail变成pass。我觉得这样就很容易理解。
7.Q:WSH的应用方法
A:WSH 实际上是一个脚本语言的运行环境,它之所以具备强大的功能,是在于其充分挖掘了脚本语言的潜力。因此,如果抛开脚本语言而空谈 WSH ,那实际上就没有了意义。而如果再展开来讲述脚本语言,显然就离开了今天的主题。
在这种情况下,只好采取一种折衷的方法:给大家推荐几个脚本文件利用 WSH 执行任务的实例,希望大家能通过这些例子对 WSH 的使用有一个初步的认识。
脚本文件的编写十分方便,你可以选用任意一个文字编辑软件进行编写,编写完成后,只需将它保存为 WSH 所支持的文件名就可以了(如.js 文件和.vbs 文件)。最常用的就是记事本编辑器,下面的实例都是以它作为工具编写的。 打开记事本编辑器,在上面编写如下内容: Wscrīpt.Echo(“走近 WSH”)
将它保存为以 .vbs 或 .js 为后缀名(千万不要写成了 .txt)的文件并退出记事本。双击执行这个文件。
这一次,我们要利用 WSH 完成一次创建十个文件夹的工作。代码如下: dim objdir set ōbjdir=wscrīpt.createobject(\"scrīpting.filesystemobject\") for k=1 to 10 anewfolder=\"c:\\chapter\" & k objdir.createfolder(anewfolder) next 同样,将它存为 .vbs 文件并退出。运行后,我们会发现,C 盘根目录下一次性多出了十个新文件夹。
最后,再举一个在服务器上的运用。下面的代码将帮助你重新启动指定的 IIS 服务: ' define a constant for stopped services Const ADS_SERVICE_STOPPED = 1 ' get an ADSI object for a computer Set ōbjComputer = GetObject(\"WinNT://MYCOMPUTER,computer\") ' get an object for a service Set ōbjService = objComputer.GetObject(\"Service\ ' check to see if the service is stopped If (objService.Status = ADS_SERVICE_STOPPED) Then ' if the service is stopped, then start it objService.Start End If 将它以 startsvc.vbs 为名保存在 C: 盘根目录。并通过如下命令执行:Cscrīpt C:\\STARTSVC.VBS。运行后,经你指定的 IIS 服务项将被重新开启。 其实,在 Windows 的 samples 目录下,有个 WSH 文件夹,那里面有不少很具代表性的 .vbs 和. js 脚本文件。
此外,利用 WSH 还可以自己编写脚本文件来提高网络管理方面的效率。
8.Q;从EXCEL中导出数据进行测试 datatable.AddSheet(\"51sheet\") datatable.ImportSheet \"f:\est.xls\Dim i,RowCount '定义两个变量 i=0 RowCount=datatable.GetSheet(\"51sheet\").GetRowCount '设置RowCount等于51sheet中的行数。 msgbox RowCount Do while i msgbox \"GetParameter-Name:\"&tempData '这里弹出我们要看的值。 '下面我们用另外一种方法来得到。 msgbox \"GetParameter-i:\"&DataTable.GetSheet(\"51sheet\").GetParameter(1).Value '这里我用GetParameter(1)去得到sheet中第一列的值。 loop 9.Q:关于dtGlobalsheet与dtGlobalsheet 1) dtGlobalsheet只有一个,它的index值比较特殊,它有两个index值,一个是1还有一个是内置的默认的1000。 你可以用1或者1000去引用它都是正确的。当然了,如果你用dtGlobalsheet来引用它也是正确的。这个sheet的Name叫做\"Global\"。注意:SheetName是区分大小写的。 2) dtLocalsheet可以用index:1001来引用,当然,也可以用2来引用。至于其它自定义的sheet嘛,你就只能用index:3来引用了。 它没有内置的默认的类似前两个那样的index值。 3) datatable这个对象只有一个。就是所有sheet的集合。或许你把它理解为excel文件比较好。 dtsheet呢?就是其中的每个sheet。所不同的就是MI为他们做了一些默认值。在我们的应用中,可能会有多个action,如:actiion1,actiion2,actiion3 这些action也分别对应有各自默认的LoaclSheet.即:actiion1,actiion2,actiion3。 如果每个action中,我们都只用到一个sheet,那就好办了,在每个action中都可以用localsheet来引用,但是如果我们有两个及两个以上的sheet.那么就比较容易乱套了。 10、Q:移动当前位置的行 For i=1 to 3 datatable.getsheet(\"Global\") datatable.setcurrentrow(i) DataTable(\"C\把表Global中的nodename字段中的内容取出来。 Next 11、Q:如何能记录到页面的校验码?(Output value能不能得到web页面的校验码,一般的校验码是由图片随即生成的 ,用QTP怎么录脚本在登陆前得到校验码并输入到校验码一栏) A:1)一个很简单的方法:测试时叫开发屏蔽掉检验码的功能后,再录制脚本。检验码的功能可以手工很简单测试出来。 2)想得到图片的校验码,唯一的方法就是跟程序员拿程序,然后自己在脚本里面写FUCNTION! 其它就要手动输入了! 12、Q:QTP正则表达式的帮助 A: QTP regular expression usage.doc (到Google里勾吧) 13、自动测试实施计划 1)分析实施自动化测试可能存在的风险:就是决定是否实施, 用成本 时间 效果 。。 2)制定实施的时机:也就是在什么阶段 3)研究所要测试的功能 性能 4)分析在测试中可能遇到的问题 和困难 5)预估所需要的人时和相应的硬件 7)确定负责人员和相关测试人员 6)制定详细的测试计划 方案 7)最后是执行计划 14、Q:一个Action里如何调用在另一个Action中定义的函数、过程(或变量、常量) 例如: ----------------------------------- 'Action_A Public strURL ...... ...... Function QueryList() ...... ...... ...... ...... End Function ------------------------------------ 'Action_B '如何调用 QueryList函数和strURL A:1)可以把这些变量和Function放在vbs文件作为resource文件共享,在每个Action中添加该文件. 如果function中出现控件调用,那么必须确保该控件在相应的Action的object repository中是存在的. 2)定义一个可被调用的ACTION里面唯一的放一个FUNCTION 15、Q:如何管理QTP的源代码?(QTP生成的源代码比较多,而且和环境控件都有关,假如需要多人同时开发, 请问如何管理源代码?) A: 一个是代码你可以通过vss,cvs等来进行管理 一个是通过td或者qc的基于用例的代码管理 其实第一种方法是基于版本控制来进行的,第二种方法是基于用例管理进行的 角度不同,管理方法也不同,不过团队协作需要的大家分工明确,进度控制。代码管理可以借鉴开发的方法。 16、Q:脚本不能回放,IE中的AtiveX设置有问题?? A: TOOL---OPTIONS----Ative screen 然后点开advanced..,把LOAD ACTIVEX CONTROLS打勾 TOOL---OPTIONS----Ative screen 然后点开advanced..,run scrīpts-->disabled! 17、Q: 如何参数化link Browser(\"Browser\").Page(\"Page\").Sync Browser(\"Browser\").Navigate \"http://www.51testing.com/cgi-bin/index.php\" Browser(\"Browser\").Page(\"51Testing软件测试论坛---软件测试,软件质量工程师\").Sync Set tags=Browser(\"Browser\").Page(\"51Testing软件测试论坛---软件测试,软件质量工程师\").Object.links Dim i,j, arr() i=0 For Each element in tags If Ucase(element.tagname)=\"A\" and left(element.InnerText,1)=\"[\" Then ReDim Preserve arr(i+1) arr(i)=element.InnerText i=i+1 end if Next For j=0 to i Browser(\"Browser\").Page(\"51Testing软件测试论坛---软件测试,软件质量工程师\").Link(\"[ 版主讨论区 ]\").SetTOProperty \"Text\ Browser(\"Browser\").Page(\"51Testing软件测试论坛---软件测试,软件质量工程师\").Link(\"[ 版主讨论区 ]\").Click Browser(\"Browser\").Back Next 这段代码先是打开一个空的页面,然后输入url.到达论坛首页。然后得到所有版面的名称,也就是link的名称,存到数组里面。然后使用SetTOProperty更换录制时候录下的link的属性,这时候再click。 18、Q:QTP 在Debug狀態,在Export View 區域不能寫入任何東西 A: 如果你的目的是在debug过程中修改已执行过的命令,可以在Debug view的Command中执行命令,如重新执行已经执行过的命令,修改变量的值等等。 如:Window(\"Flight Reservation\").WinEdit(\"Name:\").Set \"51testing\" 已经执行,如果现在想修改“51testing”为“testing”,可以在command中执行 Window(\"Flight Reservation\").WinEdit(\"Name:\").Set \"testing\" 19、Q:动态变化值如何获取 A:VAL=Browser(\"欢迎使用我的工作台\").Page(\"欢迎使用我的工作台\").Frame(\"managePlace_7\").WebRadioGroup(\"userAccountId_0\").GetROProperty(\"Value\") Browser(\"欢迎使用我的工作台\").Page(\"欢迎使用我的工作台 \").Frame(\"managePlace_7\").WebRadioGroup(\"userAccountId_0\").select val 20、Q:如何一一获得Table中 某栏 link 的 text? A:通过上面link 的学习. 我终于融会贯通,完成了我的问题: 与大家共享: Browser(\"Login\").Page(\"Page\").Frame(\"contents\").ViewLink(\"treeview\").Image(\"Tplus\").Click Browser(\"Login\").Page(\"Page\").Frame(\"contents\").ViewLink(\"treeview\").Image(\"Tplus_2\").Click Browser(\"Login\").Page(\"Page\").Frame(\"contents\").ViewLink(\"treeview\").Link(\"开课设置\").Click Browser(\"Login\").Page(\"Page\").Frame(\"main\").WebList(\"drpStatus\").Select \"任意\" Browser(\"Login\").Page(\"Page\").Frame(\"main\").WebButton(\"查找\").Click Browser(\"Login\").Page(\"Page\").Sync Dim finded,findCode,Nowout 'define a constrat for find findCode = 110901 finded = false Function MaxPage(pageString) 'msgbox pageString Dim ilen,i,j ilen = len(pageString) i=ilen While i>0 j = mid(pageString,i,1) 'msgbox j If instr(\"1234567\ MaxPage = j 'msgbox MaxPage Exit function End If i=i-1 Wend End Function Dim trowcount,maxp trowcount = Browser(\"Login\").Page(\"Page\").Frame(\"main_8\").WebTable(\"开课代码\").RowCount msgbox \"Rowcount: \"&trowcount Nowout = Browser(\"Login\").Page(\"Page\").Frame(\"main_8\").WebTable(\"开课代码\").GetCellData(trowcount,1) Nowout = trim(Nowout) maxp = MaxPage(Nowout) msgbox \"max page: \"& maxp Dim nowPage,checkid For nowPage = 1 to maxp If finded Then Exit for End If ' link to the 当前所需page If nowpage>1 Then Browser(\"Login\").Page(\"Page\").Frame(\"main_8\").Link(\"[2]\").SetTOProperty \"Text\ Browser(\"Login\").Page(\"Page\").Frame(\"main_8\").Link(\"[2]\").Click Browser(\"Login\").Page(\"Page\").Sync end if ' Get the rowcount of table in now page trowcount = Browser(\"Login\").Page(\"Page\").Frame(\"main_8\").WebTable(\"开课代码\").RowCount msgbox \"Rowcount: \"&trowcount 'link every record in the table of the page for i = 2 to trowcount - 2 Nowout = Browser(\"Login\").Page(\"Page\").Frame(\"main_8\").WebTable(\"开课代码\").GetCellData(i,2) 'msgbox i&\": \"&Nowout checkid = \"dgCourse:_ctl\" &(i+1)& \":_ctl0\" Browser(\"Login\").Page(\"Page\").Frame(\"main_8\").WebCheckBox(\"dgCourse:_ctl3:_ctl0\").SetTOProperty \"name\ Browser(\"Login\").Page(\"Page\").Frame(\"main_8\").WebCheckBox(\"dgCourse:_ctl3:_ctl0\").Set \"ON\" Browser(\"Login\").Page(\"Page\").Frame(\"main_8\").Link(\"0901\").SetTOProperty \"Text\ Browser(\"Login\").Page(\"Page\").Frame(\"main_8\").Link(\"0901\").Click Browser(\"开课设置详细信息\").Page(\"开课设置详细信息\").Sync 'wait(1) msgbox \"begun\" msgbox findCode msgbox Nowout msgbox \"finished\" If trim(findCode) = trim(Nowout) Then finded = true msgbox \"find is ok!\" wait(2) Exit for End If Browser(\"开课设置详细信息\").Close Browser(\"Login\").Page(\"Page\").Sync next Next 21、Q:网页下拉框的选择 A:For i =1 to 10 Randomize IndexNum=Int((10 - 5 + 1) * Rnd + 5) Browser(\"Mercury Tours\").Page(\"Find Flights_2\").WebList(\"arrive\").Select \"#\"&IndexNum wait(3) Next Sub ChildObjects_Example() 'The following example uses the ChildObjects method to find all the 'list objects on a Web page, and then to select an item in each list. Set ōDesc = Descrīption.Create() oDesc(\"micclass\").Value = \"WebList\" Set Lists = Browser(\"Mercury Interactive\").Page(\"Mercury Interactive\").ChildObjects(oDesc) NumberOfLists = Lists.Count() For i = 0 To NumberOfLists - 1 Lists(i).Select i + 1 Next End Sub 22、Q:将测试数据单独拿出来 A:取得一个 Browser(\"Browser\").Page(\"\").WebList(\"fid\").GetItem (1) 取得全部 Browser(\"Browser\").Page(\"\").WebList(\"fid\").GetROProperty(\"all items\") 以下可以在自带的例子中实现 Window(\"Flight Reservation\").WinComboBox(\"Fly From:\").Select \"Frankfurt\" a=window(\"Flight Reservation\").wincombobox(\"Fly From:\").GetItem(1) reporter.ReportEvent 2,\"下拉列表的值\ 23、Q:和TD连接 A:在QTP中不是有个Quality Center Connection,选择服务器连接,服务器处输入类似http://computer_name/tdbin,其中computer_name为服务器的名字,连接后在测试结果中添加defect就可以与TD相连了。 24、Q:处理Windows弹出窗口 A:IF Not Window(\"Flight Reservation\").Exist(1) Then 'Calling open flight If not Dialog(\"Login\").Exist(1) Then Browser(\"管理系统\").Dialog(\"Microsoft Internet Explorer\").WinButton(\"确定\").Click End If 25、Q:查询结果的比较 这是查询一个字段的,对查询结果多页的情况也涉及了,其实应该把所有查询字段联合起来的,也就是改改sql语句和判断条件。 [i]Set Conn = CreateObject(\"ADODB.Connection\") Set Rs = CreateObject(\"ADODB.Recordset\") Conn.Open \"Descrīption=kml-it;DRIVER=SQL Server;SERVER=KML-IT;UID=sa;PWD=password;APP=QuickTest Professional;WSID=KML-MICHELLE;DATABASE 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务