-
支付宝面试题(原创)
2014-03-29 13:56:11
1从字符串中分离" http://www.163.com/index.html"出“www.163.com”2 输入任意一个字符串然后把它倒序显示出来Dim str1,str2,str1l
str1= InputBox("Enter a string","Enter your name:")
MsgBox ("You entered: " & str1)
str1l=len(str1)
msgbox str1l-1
reDim str2(str1l-1)
Dim i
i=str1l-1
while(i>=0)
str2(i)=mid(str1,str1l-i,1)
i=i-1
wend
msgbox join (str2) ' gnij ieb ot emoclew -
vbscript 实现字符2种不同方式颠倒(原创)
2013-05-21 13:43:40
''- - - - - -example 1 - - - - - - 字符串按着字节颠倒
Option Explicit
Dim str1
str1="welcome to beijing"
Dim arry(3)
arry(0)=right(str1,7)
arry(1)=mid(str1,9,2)
arry(2)=left(str1,7)
msgbox join (arry) ' beijing to welcome'- - - - - - - - - - - - - - - - - 按着字节颠倒- - - - - -example 2 - - - - - - 字符串完全颠倒显示
'Option Explicit
Dim str1,str1l
str1="welcome to beijing"
str1l=len(str1)
msgbox str1l-1
'Dim str2(str1l-1)' such as define,will report "Expected integer constant"
reDim str2(str1l-1)
Dim i
i=str1l-1
while(i>=0)
str2(i)=mid(str1,str1l-i,1)
i=i-1wendmsgbox join (str2) ' gnij ieb ot emoclew'- - - - - -example 2 - - - - - - 字符串完全颠倒显示 -
QTP调用自己开发的.net类库
2010-10-21 09:32:33
1、 用VS2008编写个类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DemoCom
{
public interface IMyClass
{
int Add(int x, int y);
}
public class ComTest
{
public int Add(int x, int y)
{
if (x<0)
{
x=0;
}
return x + y;
}
}
}
2、编译生成DemoCom.dll,保存至D盘
3、QTP调用DemoCom.dll类文件中的Add(int x, int y)
Set api= DotNetFactory.CreateInstance("DemoCom.ComTest","d:\DemoCom.dll")
api.Add 10,10
说明:DemoCom--名词空间
ComTest---类名
通过本例子,QTP调用NET动态库文件的方法
-
自定义验证点-HTML模式
2010-08-24 21:13:48
很久没更新了,最近事情实在是太多,这两天稍微空点,终于能挤出时间来更新了,今天要讲的是自定义过程校验,内容比较特别,正常情况我们都知道,自定义报告的话我们可以直接使用Report对象,而当我们在使用验证点时经常会用到Checkproperty,执行它之后QTP会自动在report里生成一条验证结果。以上的我就不说了,相信大家一定都非常精通了。今天主要是讲一下怎么结合验证点在QTPreport中输出HTML格式的结果。
废话不说,上例子:
上图就是我们需要实现的最终结果。来看一下脚本的实现:
1. 报告生成函数(过度函数)
注意:这里的GetTOProperty("testObjName")是一个隐藏属性,可以获取QTP对象库里的对象的LOGICNAME.
'######################### 报告生成 ###########################
private Function HReport(ExpectedValue,ActualValue,testStatus,nodename)
Set EventDesc = CreateObject("Scripting.Dictionary")
'添加状态
oEventDesc("Status") = micFail
'添加是否过滤
oEventDesc("EnableFilter") = False
'添加节点名称
oEventDesc("NodeName") = nodename
'添加HTML结果
oEventDesc("StepHtmlInfo") = "<TABLE border='1'>" & _
"<TR><TD>Actual Value</TD><TD>"+ExpectedValue+"</TD></TR>" & _
"<TR><TD>Expected Value</TD><TD>"+ActualValue+"</TD></TR>" & _
"<TR><TD>Checkpoint Status</TD><TD style='background-color:red'><b>Failed</b></TD></TR>" & _
"</TABLE>"
'判断状态
If testStatus Then
oEventDesc("Status") = micPass
oEventDesc("StepHtmlInfo") = Replace(oEventDesc("StepHtmlInfo"),_
"<TD style='background-color:red'><b>Failed</b></TD>","<TD style='background-color:green'><b>Passed</b></TD>")
End If
'生成报告
newEventContext = Reporter.LogEvent ("Replay",oEventDesc,Reporter.GetContext)
'释放资源
Set EventDesc = nothing
End Function
2. 验证函数 - 调用第一个报告生成函数自动判断成功与失败
'########################### 自定义过程校验 ##########################
Function ValidateProperty (Object, PropertyName, ExpectedValue)
'判断预期是否与实际值相等
If Object.GetROProperty(PropertyName) = ExpectedValue Then
'成功
HReport ExpectedValue,Object.GetROProperty(PropertyName),true,_
"check "+Object.GetTOProperty("testObjName")+"<"+PropertyName+">属性"
ValidateProperty = True
Exit Function
Else
' 失败
HReport ExpectedValue,Object.GetROProperty(PropertyName),false,_
"check "+Object.GetTOProperty("testObjName")+"<"+PropertyName+">属性"
ValidateProperty = False
Exit Function
End If
End Function
这里的验证函数使用了测试对象的抽离技术。调用时可以直接把对象传入.
把以上两个函数都存放在函数库中,然后直接调用验证函数(函数2)即可
set WebEdit = Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("搜索框")
ValidateProperty oWebEdit,"name","wd"
ValidateProperty oWebEdit,"name","wd1"
结果1: wd 验证成功,如图:
结果2: wd1 验证失败,如图:
本文来自CSDN博客:http://blog.csdn.net/zzxxbb112/archive/2010/06/18/5678204.aspx
-
[论坛] QTP 测试.net windows forms 遇到问题
2010-07-26 10:42:15
1 文本框先获得焦点,双击一个文本框然后弹出一个新窗体
问题:录制完了,回放时会鼠标会停留在这里,鼠标点击下就过去
2 点击某表格中(DataGridView)的某一列(DataGridViewLinkCell),
如“选择”去选择一条数据
问题:录制完了,回放时会鼠标会停留在这里,鼠标点击下就过去
3 状态栏(StatusStrip)里的提示信(StatusLabel)息,比如登陆系统成功后,用户账号显示在状态栏
问题:,想插入一个检查点去验证,不知道如何检查?
备注,QTP 9.2 加载了.net +web插件
[ 本帖最后由 haven6 于 2010-7-22 20:50 编辑 ] -
持续汇总QTP真实实践经验
2010-07-26 08:31:56
1、 脚本录制完了,一定要养成个检查下语法的习惯,会避免浪费一些不必要的时间
2、 一般右键菜单打开时,加个wait函数或同步函数
3、 一般菜单打开时,加个wait 函数或同步函数
4、 检查点步骤前有很多情况需要加wait 函数或同步函数,可以减少无关的很多失败
5、 应用程序任何不被QTP识别的区域或对象,检查时可以用位图检查(录制过程中添加),比如状态栏(StatusStrip)里的提示信(StatusLabel)息,比如登陆系统成功后,用户账号显示在状态栏.
6、 添加检查点建议录制过程中添加,有些检查点录制停止状态下就不可以添加(目前还不知道为什么),比如文本区域检查点、同步检查点。
7、 按F11调试程序,在运行过程中有些文本框会或得焦点,这时候你手动去输入内容就没办法继续调试下去,解决办法:在脚本开始处+SystemUtil.BlockInput;在程序结尾处SystemUtil.UnblockInput。目的是在程序运行过程中禁止键盘鼠标操作。
6、程序录制过程中,有些属性方法录制不下来,回放时会报general error或 Object is disable 等等,可以充分利用object by 或.net windows forms spy监控下,看看有哪些属性、方法。找到与回放时报错的方法,手动添加到脚本中去。真的可以解决很多问题。
-
Recovery Scenario实践
2010-07-24 21:07:56
具体实例
1)有这样段脚本:Window("记事本").Activate
Window("记事本").WinMenu("Menu").Select "文件(F);保存(S) Ctrl+S"
Window("记事本").Activate
Window("记事本").WinEditor("Edit").SetCaretPos 0,0
Window("记事本").WinEditor("Edit").Type "31221"
Window("记事本").WinEditor("Edit").Type micReturn
Window("记事本").WinEditor("Edit").Type "31sad"对象库中 添加了3个对象Window("记事本")‘WinMenu("Menu")、("Edit")
2)用QTP打开这段脚本或复制进去,注意添加上面3个对象进对象库3)任意打开一个记事本并最小化,注意一定要“最小化”;
4)开始运行脚本
5)将会提示“Object not visible",并且会停止往下执行脚本
接下来用Recovery Scenario的办法,让QTP 自动运行跳过这个错误继续执行脚本
1)选择菜单 ”Resource|Resource Scenario Manager"
2)在Scenarios 区域选择"New Scenario"图标按钮
3)下一步
4)选 Test run error
5)下一步
6)Error下拉列表中选择“Object not visible"或“any error”
7)下一步
8)选择Keyboard or mouse operation
9)下一步
10) 选择 Click default button/Press the ENTER key
11) 下一步
12) 取消Add another recovery operation复选框勾选,并点击“下一步”
13)repeat current step and continue
14)下一步
15) 给场景命个名字
16)点击save保存到一个地方
17)用QTP 重新打开上面那段记事本脚本,并关联场景恢复脚本
方法
File|settings|recovery|Scenarions 中点击“+”去找到那个场景恢复脚本
18)打开个记事本并最小化状态,并运行QTP
ok看看运行结果,成功恢复过来了
-
用Schedule定时运行QTP脚本
2010-07-24 09:51:54
创建一个.vbs,在控制面板的Schedule里面定义自己的task就好
vbs的脚本如下:
Dim qtApp 'As QuickTest.Application ' Declare the Application object variable
Dim qtTest 'As QuickTest.Test ' Declare a Test object variable
Dim qtResultsOpt 'As QuickTest.RunResultsOptions ' Declare a Run Results Options object variable
Set qtApp = CreateObject("QuickTest.Application") ' Create the Application object
qtApp.Launch ' Start QuickTest
qtApp.Visible = True ' Make the QuickTest application visible
' Set QuickTest run options
qtApp.Options.Run.ImageCaptureForTestResults = "OnError"
qtApp.Options.Run.RunMode = "Fast"
qtApp.Open "C:\ Your Test Path Here", True ' Open the test in read-only mode
' set run settings for the test
Set qtTest = qtApp.Test
qtTest.Settings.Run.OnError = "NextStep" ' Instruct QuickTest to perform. next step when error occurs
Set qtResultsOpt = CreateObject("QuickTest.RunResultsOptions") ' Create the Run Results Options object
qtResultsOpt.ResultsLocation = "C:\Your Results Path Here" ' Set the results location
qtTest.Run ' Run the test
'qtTest.Close ' Close the test
Set qtResultsOpt = Nothing ' Release the Run Results Options object
Set qtTest = Nothing ' Release the Test object
Set qtApp = Nothing ' Release the Application object转自
http://www.ltesting.net/html/87/n-154787.html
备注:玩这个的关键有两个 1,添加计划任务时输入windows账号密码 2 启动windows 的task Schedule
-
用Schedule定时运行QTP脚本
2010-07-24 09:51:54
创建一个.vbs,在控制面板的Schedule里面定义自己的task就好
vbs的脚本如下:
Dim qtApp 'As QuickTest.Application ' Declare the Application object variable
Dim qtTest 'As QuickTest.Test ' Declare a Test object variable
Dim qtResultsOpt 'As QuickTest.RunResultsOptions ' Declare a Run Results Options object variable
Set qtApp = CreateObject("QuickTest.Application") ' Create the Application object
qtApp.Launch ' Start QuickTest
qtApp.Visible = True ' Make the QuickTest application visible
' Set QuickTest run options
qtApp.Options.Run.ImageCaptureForTestResults = "OnError"
qtApp.Options.Run.RunMode = "Fast"
qtApp.Open "C:\ Your Test Path Here", True ' Open the test in read-only mode
' set run settings for the test
Set qtTest = qtApp.Test
qtTest.Settings.Run.OnError = "NextStep" ' Instruct QuickTest to perform. next step when error occurs
Set qtResultsOpt = CreateObject("QuickTest.RunResultsOptions") ' Create the Run Results Options object
qtResultsOpt.ResultsLocation = "C:\Your Results Path Here" ' Set the results location
qtTest.Run ' Run the test
'qtTest.Close ' Close the test
Set qtResultsOpt = Nothing ' Release the Run Results Options object
Set qtTest = Nothing ' Release the Test object
Set qtApp = Nothing ' Release the Application object转自
http://www.ltesting.net/html/87/n-154787.html
-
讲解QTP脚本的封装和调用
2010-07-24 09:42:44
把QTP脚本封装起来,使其看起来一目了然!
简单介绍一下方法:
'启动飞机订票系统
Sub flight()
SystemUtil.Run "D:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe","","D:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\","open"
End Sub
'登录
Sub login()
Dialog("Login").WinEdit("Agent Name:").Set "cff100"
Dialog("Login").WinEdit("Password:").SetSecure "48dda077c740a7e3a91bdb8caff1f6fae5f02d1b"
Dialog("Login").WinButton("OK").Click
End Sub
'插入订单
Function insertorder()
Window("Flight Reservation").ActiveX("MaskEdBox").Type "111111"
Window("Flight Reservation").WinComboBox("Fly From:").Select "London"
Window("Flight Reservation").WinComboBox("Fly To:").Select "Paris"
Window("Flight Reservation").WinButton("FLIGHT").Click
Window("Flight Reservation").Dialog("Flights Table").WinList("From").Select "12538 LON 10:24 AM PAR 12:24 PM AF $162.40" 可以以数值代替如2
Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
Window("Flight Reservation").WinEdit("Name:").Set "cff100"
Window("Flight Reservation").WinRadioButton("Business").Set
Window("Flight Reservation").WinButton("Insert Order").Click
Window("Flight Reservation").ActiveX("Threed Panel Control").WaitProperty "text", Insert Done..., 10000
End Function
'退出
Sub logout()
Window("Flight Reservation").Close
End Sub
其实就是把脚本按操作分段。然后以过程(SUB.....END SUB)或函数(FUNCTION ....END FUNCTION)进行封装。
这样的脚本看上去一目了然,易理解也易于管理。
QTP函数过程的调用
以上面的QTP录制脚本的封装中的脚本为例:
Call 过程名/函数名
直接调用过程名/函数名
也以飞机订票系统为例。调用上面封装的过程/函数:
flight/call flight
login/call login
insertorder/Call insertorder
logout/Call logout
1. 调用SUB/FUNCTION方法是一样的……除了CALL调用如果有参数则需要使用括号将参数变量括起来。
2. SUB与FUNCTION的区别:SUB过程是没有返回值的.但是FUNCTION是可以有返回值的。转自http://www.examda.com/soft/zhongji/pingce/20090619/111722995.html
-
缺少对象 WScript 问题解决方法
2010-07-23 14:00:18
方法一:
先把脚本保存起来(保证你的脚本能正确运行),例如命名为test.vbs
然后在QTP写以下脚本就可以正确运行了!
Dim oShell
Set oShell =CreateObject ("WSCript.shell")
oShell.run "cmd /K wscript e:\test.vbs"
Set oShell = Nothing
方法二:
首先要明白 WScript.CreateObject 和 CreateObject 的区别。前者的描述方式是基于windows来识别和调用的,所以假如你在一个vbs文件里这么描述,然后双击执行这个文件是没有问题,因为windows存在Wscript这个对象,它遇到这个对象的时候会调用 C:\windows\system32\wscript.exe 这个 应用程序去执行它。
而后者则是不直接调用WScript这个对象来进行后期绑定WSH对象的。比如你在ASP中、QTP中,都必须用这个方式。因为ASP也好,QTP也好,里面都不存在WScript这个对象,所以你用WScript.CreateObject肯定会失败。
明白了这个原因,你就很清楚为什么要这么写,该怎么修改了。
将: WScript.CreateObject 改为 CreateObject 问题就解决了!
-
QTP录制菜单(包含右键菜单)
2010-07-21 21:32:34
QTP如何鼠标右键菜单
以QTP附带的订票网站sample为例,edit控件username鼠标右键,点击paste(第4个菜单项)
cur_replay_type = Setting.WebPackage("ReplayType")
Setting.WebPackage("ReplayType") = 2
Browser("Browser").Page("Welcome: Tours").WebEdit("userName").Click 5,4, micRightBtn
Setting.WebPackage("ReplayType") = cur_replay_type
index=4
Set WshShell = CreateObject("Wscrīpt.Shell")
For i = 1 To index
WshShell.sendKeys "{DOWN}"
Next
WshShell.sendKeys "{ENTER}"
Set WshShell = nothing在录制时,比如打开记事本,点击下拉菜单 "文件"-->"退出";
回放时会出现 object not visible ;
windows("记事本").click 193,117
windows("记事本").winmenu("ContextMenu").Select "文件:退出"
QTP默认录制方式是无法录制下拉菜单的,必须修改设置后再录制
修改设置如下:
在tools -> web event recording configuration 点击custom settings... 展开Web objects,
选种webelement,点击event -> add -> onmouseover 。并确定在record栏内,状态是enabled。
然后再重新录制你的脚本。
执行录制后的脚本,无法回放成功,这是因为脚本只录制了鼠标的onmouseover 事件,却没有录制click事
件,所以脚本录制完后要手动添加click事件。 -
一些公司的QTP编程面试题
2010-07-20 22:24:35
' (1) 随便输入个数,求它的累加和,上海华诠科技
'************************************************
Function addmethod()
Dim sum,i
sum=0
For i=1 to inputbox("enter your number") Step 1
sum=sum+i
Next
print sum
End Function
addmethod()
' (2) 随便输入个数,求它的阶层 ,惠普(face-to-face的面试)
'************************************************
Function jiec() '定义一个阶层函数
Dim sum,i
sum=1
For i=1 to inputbox("enter your number") Step 1
sum=sum*i
Next
print sum
End Function
jiec()
' (3) 用任何一种程序打印出一颗圣诞树,惠普(笔试),晕死,当时想用vbscript. 写出来,结果失败,改天调试出来
'************************************************ -
QTP 调试时提示ActiceX部件不能创建对象
2010-07-18 21:12:58
用QTP运行下列脚本 提示:ActiceX部件不能创建对象
Dim ExcelSheet
Set ExcelSheet = CreateObject("Excel.Sheet")
' Make Excel visible through the Application object.
ExcelSheet.Application.Visible = True
' Place some text in the first cell of the sheet.
ExcelSheet.ActiveSheet.Cells(1,1).Value = "This is column A, row 1"
' Save the sheet.
ExcelSheet.SaveAs "C:\DOCS\TEST.XLS"
' Close Excel with the Quit method on the Application object.
ExcelSheet.Application.Quit
' Release the object variable.
Set ExcelSheet = Nothing在网上找过几个方法
1)把下列放入记事本,并把后缀改成bat格式
rundll32.exe advpack.dll /DelNodeRunDLL32 %systemroot%\System32\dacui.dll
rundll32.exe advpack.dll /DelNodeRunDLL32 %systemroot%\Catroot\icatalog.mdb
regsvr32 /s comcat.dll
regsvr32 /s asctrls.ocx
regsvr32 /s oleaut32.dll
regsvr32 /s shdocvw.dll /I
regsvr32 /s shdocvw.dll
regsvr32 /s browseui.dll
regsvr32 /s browseui.dll /I
regsvr32 /s msrating.dll
regsvr32 /s mlang.dll
regsvr32 /s hlink.dll
regsvr32 /s mshtml.dll
regsvr32 /s mshtmled.dll
regsvr32 /s urlmon.dll
regsvr32 /s plugin.ocx
regsvr32 /s sendmail.dll
regsvr32 /s mshtml.dll /i
regsvr32 /s scrobj.dll
regsvr32 /s corpol.dll
regsvr32 /s jscript.dll
regsvr32 /s msxml.dll
regsvr32 /s imgutil.dll
regsvr32 /s cryptext.dll
regsvr32 /s inseng.dll
regsvr32 /s iesetup.dll /i
regsvr32 /s cryptdlg.dll
regsvr32 /s actxprxy.dll
regsvr32 /s dispex.dll
regsvr32 /s occache.dll
regsvr32 /s iepeers.dll
regsvr32 /s urlmon.dll /i
regsvr32 /s cdfview.dll
regsvr32 /s webcheck.dll
regsvr32 /s mobsync.dll
regsvr32 /s pngfilt.dll
regsvr32 /s licmgr10.dll
regsvr32 /s hhctrl.ocx
regsvr32 /s inetcfg.dll
regsvr32 /s trialoc.dll
regsvr32 /s tdc.ocx
regsvr32 /s MSR2C.DLL
regsvr32 /s msident.dll
regsvr32 /s msieftp.dll
regsvr32 /s xmsconf.ocx
regsvr32 /s ils.dll
regsvr32 /s msoeacct.dll
regsvr32 /s wab32.dll
regsvr32 /s wabimp.dll
regsvr32 /s wabfind.dll
regsvr32 /s oemiglib.dll
regsvr32 /s directdb.dll
regsvr32 /s inetcomm.dll
regsvr32 /s msoe.dll
regsvr32 /s oeimport.dll
regsvr32 /s msdxm.ocx
regsvr32 /s dxmasf.dll
regsvr32 /s laprxy.dll
regsvr32 /s l3codecx.ax
regsvr32 /s acelpdec.ax
regsvr32 /s mpg4ds32.ax
regsvr32 /s danim.dll
regsvr32 /s Daxctle.ocx
regsvr32 /s lmrt.dll
regsvr32 /s datime.dll
regsvr32 /s dxtrans.dll
regsvr32 /s dxtmsft.dll
regsvr32 /s wshom.ocx
regsvr32 /s wshext.dll
regsvr32 /s vbscript.dll
regsvr32 /s scrrun.dll mstinit.exe /setup
regsvr32 /s msnsspc.dll /SspcCreateSspiReg
regsvr32 /s msapsspc.dll /SspcCreateSspiReg
echo.
echo.2)运行regsvr32 scrrun.dll
3)IE-工具-选项-安全-自定义级别-启用所有ActiceX控件或插件
都不管用, 哪位高人有更好方法?
-
QTP使用过程中遇到的问题及常用方法
2010-07-11 19:44:48
QTP使用过程中遇到的问题及常用方法 转自:http://chjuan1122.blog.163.com/blog/static/12289203201001595849815/
默认分类 2010-01-15 09:58:49 阅读135 评论0 字号:大中小
QTP使用过程中遇到的问题及常用方法
1、Action Screen 页面显示乱码问题
工具->Internet 选项->高级 最后一行复选框去掉(总是以UTF-8发送URL(需要重启动));2、自动完成代码
设置语言栏的快捷键(CTRL+P)与QTP快捷键相同3、解决下拉列表无法录制的方法
设置WebElenment的事件名称、临听、记录 分别为:on
click Always Enabled;on mouseout If Handler Enabled;on mouseover If Handler Enabled; 4、解决下拉框回放无法通过的方法
删除选择下拉菜单的下一行Click该行代码
5、QTP启动程序的方法
1.SystemUtil.Run 允许启动新的进程
格式:SystemUtil.Run file, [params], [dir], [op], [mode]2.InvokeApplication 启动应用程序
格式:InvokeApplication(Command [,StartIn])3.COM - Wsh
利用Wsh对象进行启动
Dim oShell
set Shell= CreateObject ("Wscript.shell")
oShell.Run "IEXPLORE.EXE"
Set Shell = Nothing4.通过设置
5.打开运行对话框
6、解决上传附件无法回放的方法
如果文件框可以输入,可直接输入绝对路径,如果不能输入,请开发人员默认一个文件如:d:\test.txt
7、选择下拉列表、下拉框的值,回放有问题
删除选择下拉列表、下拉框代码的下一行CLICK代码即可 -
下拉框里面的webelement无法实现click(解决办法)
2010-07-10 15:08:40
下拉框里面的webelement无法实现click转自http://bbs.51testing.com/thread-271729-1-2.html
现在有个页面的下拉框通过识别并不是weblist形式的,点击下拉框会展开下拉菜单,通过object spy发现下拉菜单里面的元素是webelement,所有元素又可以通过webtable的GetCellData方法得到,出现的问题就是我通过Browser("....").Page("....").WebTable("....").ChildItem(2,1,"WebElement",0).Click,也就是想点击下拉框的第2行第1列数据,回放脚本时该webelement未被click,有谁也碰到过类似的问题么?请问该怎么解决?
即使我把下拉框中单个的webelement添加到对象库,然后通过Browser("...").Page("...").WebElement("...").Click,问题仍然存在...解决办法:使用低端录制模式
使用低端录制模式试一下呢? 保证IE在最大化状态,使那个webelement显示在页面中固定位置,再使用低端录制模式点击这个webelement的相对坐标。 -
qtp 问题汇总
2010-07-09 21:33:24
一、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 qtapp
Set qtapp=createobject("QuickTest.application")
qtapp.Launch
qtapp.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 是对象的属性,通过对象查看器可以看到。五、修改QTP中对象的默认识别属性
以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") = 2
Browser("Browser").Page("Welcome: Mercury Tours").WebEdit("userName").Click 5,4, micRightBtn
Setting.WebPackage("ReplayType") = cur_replay_type
index=4
Set WshShell = CreateObject("Wscrīpt.Shell")
For i = 1 To index
WshShell.sendKeys "{DOWN}"
Next
WshShell.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=testdb;user id=test; password=test"
Conn.open str
Set Rs = CreateObject ("ADODB.Recordset" )
sql = "select * from user_table t where table_name = 'XXX' "
Rs.open sql,conn',1,3九、QTP测试页面字体颜色的办法
set ōbj = Browser().Page().WebElement().Object
' Get theobject
set iStyle= obj.currentstyle
' Get the attribute
sColor = iStyle.color十、下拉菜单不能回放的解决方法
在录制时,比如打开记事本,点击下拉菜单 "文件"-->"退出";
回放时会出现 object not visible ;
windows("记事本").click 193,117
windows("记事本").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 "123456789", 2, "标题内容" 十三、QTP回放的过程中出现禁止运行控件提示的解决方法
修改QTP设置如下:toos-->options..-->Active Screen-->Advanced-->点选Load ActiveX controls十四、从QC自动启动qtp如何自动加载插件
'此函数用于加载指定Test所有的插件,若要运行Test可自己加个qtApp.Test.Run
Function Load_Addins(testPath)
Dim qtApp 'As QuickTest.Application
Dim blnNeedChangeAddins
Dim arrTestAddins
Set qtApp = CreateObject("QuickTest.Application")
arrTestAddins = qtApp.GetAssociatedAddinsForTe st(testPath)
blnNeedChangeAddins = False
For Each testAddin In arrTestAddins
If qtApp.Addins(testAddin).Status <> "Active" Then
blnNeedChangeAddins = True
Exit For
End If
Next
If qtApp.Launched And blnNeedChangeAddins Then
qtApp.Quit
End If
If blnNeedChangeAddins Then
Dim blnActivateOK
blnActivateOK = qtApp.SetActiveAddins(arrTestAddins, errorDescrīption)
If Not blnActivateOK Then
Call ErrorLog(errorDescrīption) '这里是调用自己的日志函数,可替换为自己的或注释掉
Wscrīpt.Quit
End If
End If
If Not qtApp.Launched Then
qtApp.Launch
End If
qtApp.Visible = True
qtApp.Open testPath
'可在此加入qtApp.Test.Run来运行Test
Set qtApp = Nothing
End Function -
[论坛] BPT框架问题(QTP高手请指点)
2010-06-03 15:19:21
最近研究《QTP与QC组合--业务组件案例.ppt》碰到问题
测试计划——新建测试—选择测试类型为:Businesses Process,测试脚本中为测试计划添加业务组件。
我根本没办法选择到测试类型为:Businesses Process,
,TEST Type列表包含了以下类型:
MAUAL
WR-AUTOMATED
VAPI-TEST
LR-SCENAIO
QUICTEST_TEST
ALT-SCENAIO
VAPI-XP-TEST
SYSTEM-TEST
就是无:Businesses Process类型,所以也就没有办法组织业务流程,
已经安装了BPT插件
环境是:QPT92+QC9.0+BPT
[ 本帖最后由 haven6 于 2010-6-3 15:19 编辑 ]
QTP与QC组合--业务组件案例.ppt
(2010-06-03 15:19:11, Size: 387 KB, Downloads: 0) -
软件测试工具QTP的几种同步等待方法
2010-05-18 17:24:15
在编写脚本时,经常要考虑到2个步骤之间的时间间隔问题,例如,1. 打开www.baidu.com2. 输入avepoint。 由于网速的不同,打开百度网页之后会有一定的延迟,所以1,2两步之间要有一个短时间的等待,可以通过以下几种方法实现:1. 对象的默认等待时间。
QTP识别对象时,会有一个默认的等待时间,可以在File-->Settings-->Run-->Object synchronization中设置,默认时间是20秒,也就是说当执行到第2步时,网页还没有完全打开,这样的话QTP找不到第2步中需要的对象,那么它会在20秒内不断的尝试查找对象,如果百度这个网页在20秒之内完全打开,那么这个方法就可行(网页全部打开的话,第2步所需的对象就会被找到),如果超过20秒还不行的话,请参考下面几种方式
2. 使用.Sync方法。
还是打开百度,输入Avepoint,可用如下代码来实现
Browser("Browser").Navigatehttp://www.baidu.com
Browser("Browser").Page("百度").Sync
Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Set "Avepoint"
第2句的意思就是等待百度这个页面完全打开,才继续执行下面操作。
3. QTP系统自带的同步点功能
第2种方法只能在Web中使用,那么如果其他类型的对象需要等待时间怎么办?可以使用QTP系统自带的同步点功能。
还是上面的例子,在录制状态下,选择Insert-->Synchronization Point,选择要同步的对象,设置要同步的属性,我们可以对对象的Enable,visible一类表示状态的属性做同步点,生成如下脚本
Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").WaitProperty "visible", True, 100000
这句话的意思就是在100秒的时间内,等待WebEdit这个对象的visible属性,只要它的visible属性变为true,那么就执行下面操作,最后的100000单位是毫秒,如果在100000毫秒(100秒)后还没有等到visible = true,直接执行下面操作。
4. 利用VBS语句。
Do until Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Exist(5)
Wait(1)
Loop
判断WebEdite这个对象是否出现,如果没有出现,执行Wait(1),如果出现,跳出循环。
5. 死等大法。
就是用Wait()语句设置等待时间,死等,比如Wait(10),就是脚本停止10秒,任何操作都不做,10秒之后继续往下执行操作。
-
QTP9用Object Spy查看页面对象时,都显示为WinObject类型了?
2010-05-18 16:42:39
我的QTP在录制和识别Web对象时,都只能识别到Windows标准控件,无法识别Web对象。折腾了很久,今天终于发现,IE的加载项中,把QTP用来识别Web元素的控件给禁用了,启用后正常。工具->管理加载项
internet选项(属性)->程序->管理加载项->启动BHOManager Class:
三郎
标题搜索
我的存档
数据统计
- 访问量: 47700
- 日志数: 60
- 建立时间: 2006-12-08
- 更新时间: 2014-03-29