qtp中Activeabap screen active在某一action中不显示图片,难道是我操作问题给整禁用了吗,那请问如何解禁呢,谢谢。

1426人阅读
转载地址:.cn/s/blog_00p287.html
大家安装使用QTP10.0后,可能首先会遇到如下两个问题。
1、QTP10.0运行无法录制自带的windows程序Flight程序;
2、QTP10.0下active screen无法捕捉图像
我们接下来讲解以下如何解决如上两个问题。
1、QTP10.0运行无法录制自带的windows程序Flight程序;
出现该问题,大部分原因是因为你机器上安装了360安全卫士与杀毒软件。当遇到该问题时,首先检查你是否安装并启用了360,如果安装了,也不建议大家卸载360,毕竟360还是给我们电脑提供了很多安全保障,当我们运行QTP10.0时,禁用360即可。
我们在启动QTP10.0,这时,我们看到可以正常的录制windows应用程序了。
2、QTP10.0下active screen无法捕捉图像;
原因:因为安装了360杀毒软件与360安全卫士
&&&&&&360杀毒软件(360安全卫士)将ielpview.dll和VFSProtocol.dll这两个文件,当成了可疑文件放到了隔离区。
解决办法:
&&&&&&&&1、进入360杀毒软件—》隔离区-
&&&&&&&&&&&&找到这两个文件将其还原即可
&&&&&&&&2、进入360安全卫士—》查杀木马-》文件恢复区
&&&&&&&&&&&找到这两个文件将其还原即可
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:79993次
积分:1027
积分:1027
排名:千里之外
原创:20篇
转载:22篇
评论:18条您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
Action 调用问题.doc28页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
文档加载中...广告还剩秒
需要金币:130 &&
你可能关注的文档:
··········
··········
多Action的问题
为什么会使用多个Action
A问题描述:
在录制脚本的时候通常会遇到这种情况,一个步骤需要反复执行,但是其他步骤不需要跟着执行,就比如添加信息,一般分为登陆,添加,退出,这三步,只有添加这个步骤是需要重复执行的,登陆和退出不需要重复执行
B解决办法:
这个时候就需要用到多个Action调用的方式
C个人感受: 无
Action调用的设置
A问题描述:
在决定使用多个Action调用之后需要对整个脚本有一个划分,解决这个问题,在录制脚本之前,先要对脚本进行划分,还是以添加信息为例,划分成三步,登陆,添加,退出,其中添加是主要部分而添加和退出是次要部分,分别对主要部分和次要部分作相应的设置,就能达到你的要求
B处理流程:
B1分别将登陆,退出录制成为单独的Action并且单独保存下来
B2对这两个Action作设置
C1 TD是MI公司的一款测试管理工具,他采用B/S模式,使得用户可以在任何与Server相连的计算机上实现测试用例的管理
C2 QTP是MI公司推出的功能测试工具,主要用于B/S模式的系统测试
D1以登陆为例,录制好登陆脚本如下图 图4.2.D1.1
注意: 很多人录制的时候习惯性的关闭录制完成后的浏览器,这里不能让QTP录制下关闭浏览器这个步骤,所以当登陆进系统后,先停止录制,再关闭浏览器
D2对两个Action作设置,还是以登陆为例,选中脚本上的Action
图4.2.D2.2
点击右键,选择Action propertIEs出现如下对话框 图4.2.D2.3
将reusable Action选中,点击ok,主界面变为下图所示 图4.2.D2.4
Action图标变为
将退出也按上述步骤设定
E个人感受:无
调用Action
A问题描述:
在设定完登陆和退出之后,还需要在整个脚本的主要部分 添加 上作一些设置
B处理流程:
B1调用已有脚本
B2设定record and run setti
正在加载中,请稍后...君,已阅读到文档的结尾了呢~~
QTP简介及常见问题
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
QTP简介及常见问题
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口qtp问题汇总 - 采花酿蜜集 - 51Testing软件测试网 51Testing软件测试网-中国软件测试人的精神家园
qtp问题汇总
& 10:07:32
/ 个人分类:
本文来自:.cn/s/blog_70f6d15c0100yv15.html1、打开录制的文件夹后报“Unexpected file format”错误。解决方法:用QTP安装程序重新修复QTP2、QTP无法在对象库中识别出网页的对象,主要是由于以下两个原因:(1).QTP和IE的运行模式要以管理员身份运行(即:右键程序选择“Run as administrator” **俺是英文系统翻译俺不管鸟**)此条适用于vista和win7(2)QTP的运行要先于IE。即先将QTP 运行起来,待QTP运行后再启动IE。注意在QTP运行前就存在的网页要关掉okay了,这样就能搞定QTP的这个问题鸟。至于,QTP安装有问题,破解的问题,IE插件问题等等都不是问题所在。俺用的就是破解版,跑得很好没问题:)3、下拉菜单不能回放的解决方法在录制时,比如打开记事本,点击下拉菜单 "文件"--&"退出";回放时会出现windows("记事本").click 193,117windows("记事本").winmenu("ContextMenu").Select "文件:退出"QTP默认录制方式是无法录制下拉菜单的,必须修改设置后再录制修改设置如下:在tools -&
event recording configuration 点击custom settings... 展开Web objects,选种webelement,点击event -& add -& onmouseover 。并确定在record栏内,状态是enabled。然后再重新录制你的脚本。执行录制后的脚本,无法回放成功,这是因为脚本只录制了鼠标的onmouseover 事件,却没有录制click事件,所以脚本录制完后要手动添加click事件。4、怎么修改QTP对象的默认识别属性以WebCheckBox为例:在QTP里面,选择Tools-&Object Identification...Environment选择Web,找到WebCheckBox,看看QTP默认的识别WebCheckBox对象时使用的是哪些属性。可以修改识别WebCheckBox对象的属性。注意:修gia只对以后录制的脚本起作用。&一、Cannot find the "shoujian.projectname" object's parent "10_2" (class Frame). Verify that parent properties match an object currently displayed in your application.问题的解决。这个问题真是郁闷,其实产生的主要原因是:在录制脚本的时候,qtp没有识别出来框架Frame中的对象,回放时找不到对象出错。解决办法:通过object spy 识别对象 并将其添加到对象库;然后在录制点击对象的一段脚本(或者自己写),再次回放就ok了。二、注意:datatable.Importsheet "D:\test\USER_INFO.xls",1,"Action1"中,"Action1"一定要加双引号,要不然默认导入到Global中。三、自动启动qtp的vbscript脚本。dim qtappSet qtapp=createobject("QuickTest.application")qtapp.Launchqtapp.visible=true用法:将脚本卸载记事本文件中,文件格式保存为.vbs点击直接运行。就可以自动启动qtp。四、描述性编程中出现“The “[WinEdit]”object's description ,matches more than one of the objects currently displayed in your appliction.Add addtional properties to the objects ddescription in order to uniquely identify the object.”中问题的解决。这个问题看起来其实很简单就是在QTP描述过程中,发现匹配该对象的属性多于1个,因此无法正确匹配,所以QTP报错。错误如上图&问题解决方法:添加更多的对象属性,以便正确匹配,在对象查看器点击该对象(我的是password对象),点击“+”号,查看对象的属性,添加更多的属性,如:window id 等。同时将脚本修改为:Dialog("Login").WinEdit("attached text:=Password:","window id:=3001").Set "cheers_lee"注意红色字体部分,我是同个两个属性匹配WinEdit的,一个是attached text另一个是window id。再次运行脚本,通过OK!强调的是attached text和window id 是对象的属性,通过对象查看器可以看到。五、修改中对象的默认识别属性以WebCheckBox为例。在QTP里面 ,选择Tools --& Object Identification...Environment选择Web,找到WebCheckBox,看看QTP默认的识别WebCheckBox对象时使用的是哪些属性。可以修改识别WebCheckBox对象的属性。注意: 修改只对以后录制的脚本起作用。六、QTP如何鼠标右键菜单以QTP附带的订票网站sample为例,edit控件username鼠标右键,点击paste(第4个菜单项)cur_replay_type = Setting.WebPackage("ReplayType")Setting.WebPackage("ReplayType") = 2Browser("Browser").Page("Welcome:Tours").WebEdit("userName").Click 5,4, micRightBtnSetting.WebPackage("ReplayType") = cur_replay_typeindex=4Set WshShell = CreateObject("Wscrīpt.Shell")For i = 1 To indexWshShell.sendKeys "{DOWN}"NextWshShell.sendKeys "{ENTER}"Set WshShell = nothing七、如何设置让对象库不产生重复对象tools --options---web ---page/frame. optinons都选择第二项.就OK了.八、QTP中用代码连接Set Conn = CreateObject("ADODB.Connection" )str="DRIVER=Oracle in OraHome92;SERVER=192.168.0.1;DBQ=user id= password=test"Conn.open strSet Rs = CreateObject ("ADODB.Recordset" ) = "select * from user_table t where table_name = 'XXX' "Rs.open sql,conn',1,3九、QTP测试页面字体颜色的办法set ōbj =Browser().Page().WebElement().Object' Get theobjectset iStyle= obj.currentstyle' Get the attributesColor = iStyle.color十、下拉菜单不能回放的解决方法在录制时,比如打开记事本,点击下拉菜单 "文件"--&"退出";回放时会出现windows("记事本").click 193,117windows("记事本").winmenu("ContextMenu").Select "文件:退出"QTP默认录制方式是无法录制下拉菜单的,必须修改设置后再录制修改设置如下:在tools -& web event recording configuration 点击custom settings... 展开Web objects,选种webelement,点击event -& add -& onmouseover 。并确定在record栏内,状态是enabled。然后再重新录制你的脚本。执行录制后的脚本,无法回放成功,这是因为脚本只录制了鼠标的onmouseover 事件,却没有录制click事件,所以脚本录制完后要手动添加click事件。十一、QTP中如何识别带参数的链接?QTP中如何识别带参数的链接?比如:"Browser("browser").Page("page").Link("href:=http://www.xxx.test/file/upload.php?matchable=0"特殊字符都需要用转义字符""来进行转义。十二、如何让QTP运行时自动产生提示信息并自动确定?Set WshShell = CreateObject("Wscrīpt.Shell")WshShell.Popup "", 2, "标题内容"十三、QTP回放的过程中出现禁止运行控件提示的解决方法修改QTP设置如下:toos--&options..--&Active Screen--&Advanced--&点选Load ActiveX controls十四、从QC自动启动qtp如何自动加载插件'此函数用于加载指定所有的插件,若要运行Test可自己加个qtApp.Test.RunFunction Load_Addins(testPath)Dim qtApp 'As QuickTest.ApplicationDim blnNeedChangeAddinsDim arrTestAddinsSet qtApp = CreateObject("QuickTest.Application")arrTestAddins = qtApp.GetAssociatedAddinsForTest(testPath)blnNeedChangeAddins = FalseFor Each testAddin In arrTestAddinsIf qtApp.Addins(testAddin).Status && "Active" ThenblnNeedChangeAddins = TrueExit ForEnd IfNextIf qtApp.Launched And blnNeedChangeAddins ThenqtApp.QuitEnd IfIf blnNeedChangeAddins ThenDim blnActivateOKblnActivateOK = qtApp.SetActiveAddins(arrTestAddins, errorDescrīption)If Not blnActivateOK ThenCall ErrorLog(errorDescrīption)'这里是调用自己的函数,可替换为自己的或注释掉Wscrīpt.QuitEnd IfEnd IfIf Not qtApp.Launched ThenqtApp.LaunchEnd IfqtApp.Visible = TrueqtApp.Open testPath'可在此加入qtApp.Test.Run来运行TestSet qtApp = NothingEnd Function&&&基础代码&1 生产随机数列第一种方法CODE:randomize'更新反回的数据funcation rand(k,n)n=int((k-1)*rnd+1)rand=nend funcation第二种方法CODE:n=randomnumber.value(1,255)2当运行到表中的某一行,自动导出表中的所有数据CODE:row=datatable.getcurrentrowif row="5" thendatatable.export("d:\data.xml")end if3CODE:webedit("txtpass").setsecure"sdsdf...."如果参数化密码,可以直接在数据表中写入未加密的密码,它会自动识别,即不用把setsecure改为set4 如果弹出对话框就获取上面提示信息并与表中的信息对比,不统一证明弹出的提示出错,主要用来验证'判断一个窗口是否存在if(Dialog(dialog_name).exist=true) thenelseend if'判断一个窗口是否激活if(window("window_name").active=true) thenelseend if导入一个EXCEL表datatable.Import(excel_name)'将该excel文件中的表全部导入datatable.ImportSheet(excel_name,sheet_name)'导入excel中名字为sheet_name的sheet表导出一个EXCEL表datatable.ExportSheet(excel_name,sheet_name)或datatable.ExportSheet(excel_name,sheet_index)获取表中当前的行数datatable.GetCurrentRow获取表中总行数datatable.GetRowCount返回EXCEL中表的数量DataTable.GetSheetCount获取运行的表中的某个值或者设置该值DataTable.Value(colume_name,sheet_name)'获取colume_name列中的当前光标处的值DataTable.value(colume_name,sheet_name)=New_Value'设置新值DataTable.GetSheet(sheet_name).GetParameter(colume_name).valueByRow(n)判断当前光标是否处于最后一列iRow=datatable.getCurrentRowif(dataTable.value(sheet_name).GetParameter(colume_name).ValueByRow(iRow)&&expected_value)thenfor iRow=0 to iRow&datatable.getRowCountrowNum=iRownextend if获取一列数据DataTable(colume_name,sheet_name)'一个登陆的对话框,首先为一个错误的判断,后来输入正确的值点击button_name按钮Dialog(dialog_name).WinEdit(login_name).set login_wrongnameDialog(dialog_name).WinEdit(login_pwd).set login_wrongpwdDialog(dialog_name).Dialog(wrongdialog_name).WinButton(button_name).clickDialog(dialog_name).WinEdit(login_name).set login_correct_nameDialog(dialog_name).WinEdit(login_pwd).set login_correct_pwdDialog(Dialog_name).WinButton(button_name).clickwindow的方法和属性window(win_name).activeCODE: if browser("web_name").dialog("dialog_name").exist(1) then'如果不出现=falseerror_message=browser("web_name").dialog("diaglog_name").static("用户密码错误!".getRoproperty("text")   if error_message&&(datatable.value("error_info"))thenmsgbox(error_message)end ifbrowser("web_name").dialog("diaglog_name").closeend if这里我总结了两点技巧:  一是:对于dialog中,虽然提示信息对象名称是"用户密码错误",但如果信息对象名称是“该用户不存在”,不用更改会自动识别,我想主要是录制第一遍时,“用户密码错误”只是让运行时能找到这个控制,而不管它是什么内容,因为在对象仓库中,text不是决定该对象的属性二是:如果对于提示信息比较长的,可以用mid(error_message,n,m)取一部份特征提示信息进行验证,这样我想可以节省处理时间,又可以避免长度以及空格等字符的处理5datatable.value("num")只在global形式下的一种省略形式;完整形式是:CODE:datatable.value("num",dtlocalsheet)-----向某一列的单元格赋值:CODE:datatable.value("column_name",dtlocalsheet)="nanjing"-----取得某一行具体值:CODE:datatable.setcurrentrow(n)msgbox(datatable.getsheet("global").getparameter("column_name").Rawvalue)或者kk=datatable.Rawvalue("column_name","action1")----在run-time时,动态添加表格与数据CODE:kk=datatable.addsheet("sheet_name").addparameter("column_name","value").6简化代码,明晰结构的方式with--end with 结构:CODE:with Dialog("name")c1=.button("b_name").click'//等价于Dialog("name").button("b_name").clickend with7wintreeview一些操作CODE:选择一个条目:wintreeview.select(item)'根是0根的名称:wintreeview.getitem(0)8数据库检查点模块:CODE:sub database_checkset con=createobject("adodb.connection")con.open "Description=IBM_ODBC;DRIVER=SQL SSERVER=IBM;UID="&_"PWD=123456;APP=Quick Test PWSID=IBM;DATABASE=IBM_table"'access方式:con.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=d:\test.mdb"'Orocle方式:con.open "DRIVER={Oracle in OraHome92};SERVER=CESHI;UID=CND_TEST;PWD=CND;DBQ=CESHI;DBA=W;APA=T;EXC=F;XSM=DFEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=Lo;BAM=IfAllSMTS=F;MDI=Me;CSR=F;FWC=F;PFC=10;TLO=O;"set record=createobject("adodb.recordset")sql="select*from ibm_one_table"record.open sql,conDOif(record("ibm_table_column")="kai")then'//查找表格中有多少kainum=num+1;end ifrecord.movenextloop until record.eof=truerecord.closeset record=nothingcon.closeset con=nothingend sub9换行符CODE:vbcr----chr(13)回车符vblf----chr(10)换行符vbcrlf----chr(13)+chr(10)结合10Run from step有两种方式:CODE:在Keyword View模式会从本步骤运行到所有action结束在expert view模式仅会将本action运行结束11对于属性是变化的,有时可以把该属性从识别对象里删除,来解决识别问题12对系统文件的操作CODE:-------从系统的文件中获取信息及删除文件get_file_infor("c:\she.mpg")function get_file_infor(url)dim fso,fset fso=createobject("scripting.filesystemobject")set f=fso.getfile(url)f.name:f.size:f.type:f.datacreated'///获取文件信息fso.deletefile(url)'/////删除文件end function--------获取文件夹里所有文件信息get_folder_infor("c:\kai")function get_folder_infor(folder)dim fso,f,f1,nset fso=createobject("scripting,filesystemobject")set f=fso.getfolder(folder)set fc=f.filesfor each f1 in fcselect case f1.namecase"kai.mpg","she.mpg","dd.mp3"'//检查文件夹里是否含有这些文件end selectnextend function13等待某个对象出现方法CODE:y=......waitproperty("visible",true,10000)14防程序中断方法CODE:On error resume nextOn error goto handle15数组的应用:CODE:name=array(1,2,"aa","bb")name(2)="aa"16正则表达式应用模板CODE:进行日期YYYY-MM-DD的格式检查 :Function RegExpTest(patrn, strng)Dim regEx, Match, Matches' Create variable.Set regEx = New RegExp' Create a regular expression.regEx.Pattern = patrn' Set pattern.regEx.IgnoreCase = True' Set case insensitivity.regEx.Global = True' Set global applicability.Set Matches = regEx.Execute(strng)' Execute search.For Each Match in Matches' Iterate Matches collection.RetStr = RetStr & "Match found at position "RetStr = RetStr & Match.FirstIndex & ". Match Value is '"RetStr = RetStr & Match.Value & "'." & vbCRLFNextRegExpTest = RetStrEnd Functiondate_pattern="^((((19|20)(([0])|([13579][26]))-02-29))|((20[0-9][0-9])|(19[0-9][0-9]))-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((01,3-9])|(1[0-2]))-(29|30)))))$"result_message=RegExpTest(date_pattern, inputbox("请你输入要检查的时间:"))'用其它正则表达式更改此处Select case result_messageCase ""msgbox("你输入的日期格式与标准不匹配")case elseMsgBox(result_message)end select17返回一个字符串在另一字符串中的位置CODE:instr(string1,string2)18有时回放出现找不到对象时,可能不是由于你的代码问题,而是由于你的等设置问题;CODE:举例说明1:比如:你录制一个选择磁盘中的文件动作会录制为:.winlistview("").drap 46,99.winlistview("").draponitem "she.mp3"下次录制的时候,如果你的系统文件改为不显示扩展名,下次执行的时候,QTP就找不到she.mp3,只能找到举例说明2:有时由于不同操作系统以及不同的ie,导致有些窗口不能识别,比如在2000下弹出的网页对话框的标题是:“web对话框",而在2003上是”网页对话框"19"is+*"类型functionCODE:isarray'是否是数组isconnected'判断QTP是否连接到TDisdate'是否是合法的日期类型isempty'判断是否初始化isNull'判断是否为空值isNumeric'判断是否是数字型isobject'判断是否一个功能对象isready'判断设备是否准备就绪isRootFolder'是否是根目录QTP提供全局错误处理模式,有Popupmessage box,Process next action iteration,Stop run,Process next step这四种。QTP也提供On Error Resumt Next/On Error goto 0的局部错误处理模式。可以在局部范围内实现Process next step的效果,忽略错误继续执行后续步骤。这个局部错误处理模式,象局部变量优先于全局变量并且只在本函数内有效一样,优先级高于全局错误处理模式,同时只在本函数局部范围(Action本身也可以看成是个函数)内生效。它不会影响外层函数的错误处理模式,但会改变局部范围内调用的子孙函数,将子孙函数的错误处理模式改为Stop Run!四种全局错误处理模式的区别在于:1、Process next step这种模式忽略错误继续往下执行,可以通过Err.Number来判断是否发生了错误。因为Case函数的每个步骤都是密切相关的,不可能忽略错误继续往下执行下一步骤也不可能在每个步骤每个语句后面都加错误检查,这样错误处理代码太多了在很多个步骤后再检查也是不严谨的,会错上加错,并因此失去第一个错误的信息所以,这种模式不可取2、Stop run这种模式发生错误后,就抛出异常(可用Err对象得到异常里的错误信息),中止本函数,并一层一层的返回到上一层函数,最后到达Action函数后(Action本身也可以看成是个函数),就停止整个Test的执行。在一层一层的返回上层函数的过程中,如果某个中间函数有On Error Resumt Next/On Error goto 0,就会把错误拦截下来,这个中间函数会继续往下执行,不会中止函数并返回上一层函数。3、Popupmessage box这种模式在发生错误时,弹出对话框让用户选择Stop、Retry、Skip、Debug。主控Test要全自动执行,不能要求人工干预,所以这种模式不可取4、Process next action iteration这种模式跟Stop run类似,但是它只是退出本次Action循环,还会继续下一个Action循环。主控Test没有继续下一个Action循环的需求,所以这种模式不可取。经过上述分析,我们可以得到结果,我们的主控Test,全局错误处理模式使用Stop run模式,同时在主控函数里使用On Error Resumt Next/On Error goto 0的局部错误处理模式来调用Case函数。这样使得Case函数和其子函数里发生错误时,会停止执行,并层层返回到主控函数这里,并由主控函数来拦截错误,记录错误。然后主控函数就可以正常的继续执行下一个Case函数了,不用担心会导致整个Test停止执行。主控函数调用Case函数的详细过程如下:Err.ClearOn Error Resume Nextcall CaseFunctionNameIf Err.Number && 0 ThenWriteLog Err.Number'错误码WriteLog Err.Description'错误描述WriteLog Err.Source'错误来源对象,不过好像没啥用EndErr.ClearOn Error goto 0

我要回帖

更多关于 qtp action之间传值 的文章

 

随机推荐