心念旧安,夙夜忧叹。

用QTP的描述性编程高亮显示任意对象

上一篇 / 下一篇  2007-05-15 20:34:43 / 个人分类:原创文章

查看( 3237 ) / 评论( 11 )
这里运用描述性编程实现高亮显示计算器中的0到9的按钮对象。51Testing软件测试网-?ga i.h5N?
把以下代码拷到QTP中,点“运行”,看看效果。51Testing软件测试网oQp5z$b2mO[JT-d
注:本程序以windows XP下的计算器演示,若使用windows 2000的计算器无效。51Testing软件测试网+j4[#FR Y H EUiIX
51Testing软件测试网I afIk]

9N lM!uE#a:j0 SystemUtil.Run "C:\WINDOWS\system32\calc.exe","","C:\WINDOWS\system32","open"51Testing软件测试网9r3H5Ai`t@
For i =0 to 9
N'S&UI,~@ m9q0 HighlightAll Window("regexpwndclass:=SciCalc").WinButton("text:=" & cstr(i) )51Testing软件测试网nb)]v q&I
Next51Testing软件测试网7L:gEcWo
51Testing软件测试网R0XBLa7l

si1z/JTq0 Sub HighlightAll(TestObject) 51Testing软件测试网ck$rw} S p;K

,@$BY&G(Uexi0        Dim Parent, Desc, Props, PropsCount, MaxIndex, i, Objs 51Testing软件测试网5R`T\J*DI(O
       If IsEmpty(TestObject.GetTOProperty("parent")) Then
*l&?9p:I\I0               Set Parent = Desktop
{ Sdet[ P8?^ j.Y0        Else
%H'Bu2AGPtw1FM0               Set Parent = TestObject.GetTOProperty("parent")
2QY aR @K7M0        End If 51Testing软件测试网$Rf9qRt e*e}
       Set Desc = Description.Create 51Testing软件测试网 x9P1S,iF:i#R2C
       Set Props = TestObject.GetTOProperties
p0^&vn6_0        PropsCount = Props.Count - 1
RO X*^.D)k0        For i = 0 to PropsCount
Mrz+ynR,e0               Desc(Props(i).Name).Value = Props(i).Value 51Testing软件测试网ML{ M'n
       Next
x6X U.P3ye\fr3U0        Set Objs = Parent.ChildObjects(Desc) 51Testing软件测试网-C|Al4}X*[B
       MaxIndex= Objs.Count - 1
3~(G-rf9jpQ0        For i = 0 to MaxIndex 51Testing软件测试网T!H"oy!T|
              Objs.Item(i).Highlight 51Testing软件测试网y0y:`e8~+pYO
       Next 51Testing软件测试网1g6L.f7hK
51Testing软件测试网:rzxbM!Zp c`
End Sub
6N9P%`"f%d8V J2f0 51Testing软件测试网 I e8d*^f$pc
[ 本帖最后由 songfun 于 2007-5-15 20:58 编辑 ]

TAG:

denisye发布于2007-05-15 21:52:16
学习中..............
Victor's Testing Career winfood 发布于2007-05-16 09:32:39
sdlkfj3 51Testing软件测试网\|!p,[ k f.F
斑竹提供的代码太有意思了,计算器的1-9按钮可以依次高亮显示。
;n'a+?C
v]l4RF软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具

g{}1E3{H(ly&f51Testing软件测试网代码里面有个地方不明白,能不能解释一下。高亮显示WinButton的那个方法是Highlight,这个方法是整个脚本的关键。但是查过VBScript和QTP之后,发现其中都没有提到这个方法。
b9cm;V4P*y!tA6g#Vwww.51testing.com在QTP中也对其它没有公布这个方法的控件使用了这个方法,比如www.51testing.com-T        D#r#FCx
Browser("***").Page("***").WebButton("***").Highlight
)j2IA.P$X~"wnhH软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具发现也可以高亮显示WebButton。B:R        WdYW
NcdWh

Highlight方法是不是VBScript或者QTP隐藏的一个方法?
czh84063149发布于2007-05-16 09:33:36
好像有点复杂
surlary发布于2007-05-16 10:21:38
楼主的脚本感觉有些舍近求远啊,我觉得这样就足够了:

CODE:

Window("regexpwndclass:=SciCalc").Restore
Window("regexpwndclass:=SciCalc").Activate
Set objs = Window("regexpwndclass:=SciCalc").ChildObjects()

For i = 0 to objs.Count - 1
        If objs(i).GetROProperty("visible") then objs(i).HighLight
Next

大师兄--绝迹江湖 songfun 发布于2007-05-17 00:04:49
请注意看我帖子的标题:任意对象!
你没看懂程序的真正含义。软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具7MqU:d~
中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务*FB.gm-|1`8g ]0B
你只是单纯的理解去高亮显示计算器而已,而我的程序实际上可以高亮显示任意对象——只是列举了计算器为例子,实际上换个其他对象也可以。
9zWP`1bwww.51testing.com
'NS|%sJ,[2f/\www.51testing.com中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务:btP@dZ+[yf9e

QUOTE:

原帖由 surlary 于 2007-5-16 10:21 发表
OG6b-[iT8] Rs51Testing软件测试网楼主的脚本感觉有些舍近求远啊,我觉得这样就足够了:中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务6g!FK6U
H'{`)_D

jO5S_pJj
r|        }^

Window("regexpwndclass:=SciCalc").Restore
0`7b'k(P7N        Y
x ^Qmwww.51testing.com
Window("regexpwndclass:=SciCalc").Activatewww.51testing.com[B%jtf.J'U![
Set objs = Window("regexpwndclass:=SciCalc").ChildObje ...
"S,A M        Q+vlY KE
a+n'dJ
WT
sR
I

[ 本帖最后由 songfun 于 2007-5-17 00:06 编辑 ]
wish_luckyman发布于2007-06-22 17:52:16
........
No Logo! MarsNoNo 发布于2007-08-12 22:59:14
锋哥,这些隐藏的方法,你是怎么得到的?
DLB*s:Z{"V51Testing软件测试网像以前你就告诉过我“getvisibletext”,现在又来了一个“highlight”?
&\S ]hJ7`7{{-UW
TZ:X]www.51testing.com
你的思维越来越广了~~~我想偷你的思维了……
yabest的测试天地(http://www.yabest.net) yabest 发布于2007-08-13 01:36:42
LZ你这个函数的复杂点并不在于HightLight,而在于搜索所有符合TestObject的RuntimeObjects!软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具n.\WNd
所以最好还是要将函数设计分离,将搜索所有符合TestObject的RuntimeObjects这部分代码独立成一个函数。
%JE?#Hf        N%Gqq
K中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务
这样代码看起来就很好理解,不然大家看了容易糊涂,不知道为什么要搞得这么复杂!
k$^t f/rdQ;`({软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具而且搜索对象这个函数可以供其他用途使用。

HIhG#zH2b51Testing软件测试网

;Ipu%s3k$fF软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具一时手痒就做了修改,代码如下,见笑了:)
RF"nc"iA S0T| p |软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具51Testing软件测试网]4|VOC)ERX
SystemUtil.Run "C:\WINDOWS\system32\calc.exe","","C:\WINDOWS\system32","open"0xQ nBJ,t:HX_
www.51testing.com"Jr
W:e O D6d.G"w

HightLight_All_Object Window("regexpwndclass:=SciCalc").WinButton("text:=1|2|3|4|5|6|7|8|9|0")软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具        P+S%H8P%B:~        xXj

5F1D]_)p
t
www.51testing.com?E/}N6Z%p
Function Get_All_Runtime_Objects(TestObject, RuntimeObjects)
j8a+AE#O\2]~软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具
L cA gs
X;L:S软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具
       Dim Parent, Desc, Props, PropsCount
l1{/z Ly;s?j&_中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务
)}|r^iVxz软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具       If IsEmpty(TestObject.GetTOProperty("parent")) Then
#A.^7Ry*UB2_              Set Parent = Desktop
A)c aTC软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具       Else
&e$TP!?,g
d1?'@]4R中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务
              Set Parent = TestObject.GetTOProperty("parent")
2kepcX5\中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务       End Ifwww.51testing.com[
w$A1tw2I g{4[i8iL%r

       Set Desc = Description.Create
d6p7\3boj}-U7X*P中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务       Set Props = TestObject.GetTOPropertieswww.51testing.com.`9Y4F+sR
?"L
{

       PropsCount = Props.Count - 1
7d6j
nO)L(i9~,UBo软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具
       For i = 0 to PropsCount
y6bn)z%o_
?中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务
              Desc(Props(i).Name).Value = Props(i).Valuewww.51testing.com4B)WU)X7_
       Next;iMf-E'@6r
       Set RuntimeObjects = Parent.ChildObjects(Desc)软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具.o?3gM&f.~S9y"D

e!H/AW a1wb软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具       Get_All_Runtime_Objects = RuntimeObjects.Count
"}h9NTos        C51Testing软件测试网End Function
d1?0qi.r GFwww.51testing.comR$E2CJ"bF~.V


K@"t"Q'r1w
n-w软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具
Function HightLight_All_Object(TestObject)
!y8^\&e)w}9Da8Fm        Dim allRuntimeObjects51Testing软件测试网G+h6`wg/Zi
        Dim objIndex, objNum51Testing软件测试网"Teh*[uJc

9m(d.G        jUp8o,O软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具        objNum = Get_All_Runtime_Objects(TestObject, allRuntimeObjects)51Testing软件测试网        t c+G}#{${%q
        For objIndex = 0 to ObjNum-151Testing软件测试网 }2BE`dw Y&f#]
          allRuntimeObjects.Item(objIndex).Highlight
gcW#`,e9Y&`        Next
A
Y]-M;DY)T中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务
软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具ne y+Kr?Df
End Function软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具d9v(T%]I

(o{qz _www.51testing.com//原来写错了,allRuntimeObjects.Items(objIndex)要改为allRuntimeObjects.Item(objIndex),多谢hsjzfling兄纠正软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具![9R
{*L!U}'b


!N3y7| L X${        k_51Testing软件测试网[ 本帖最后由 yabest 于 2008-3-28 22:14 编辑 ]
将测试进行到底 zhangj8826 发布于2007-08-15 11:55:50
sdlkfj2
machao514发布于2008-03-28 12:35:55

QUOTE:

原帖由 yabest 于 2007-8-13 01:36 发表 2t{r$Wu[z$B
LZ你这个函数的复杂点并不在于HightLight,而在于搜索所有符合TestObject的RuntimeObjects!www.51testing.com0H^7k~[
所以最好还是要将函数设计分离,将搜索所有符合TestObject的RuntimeObjects这部分代码独立成一个函数。
1wq"B+l G#s5['ISd51Testing软件测试网这样代码看起来 ...
www.51testing.comc*\rE;U-hI

.d+RQc!e5G8@ _软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具这个看起来确实好理解一点,不过好像有点问题,函数HightLight_All_Object中的变量allRuntimeObjects并不能获得RuntimeObjects对象(函数Get_All_Runtime_Objects中)的引用,中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务2zj8y x3G
当这句objNum = Get_All_Runtime_Objects(TestObject, allRuntimeObjects)运行完毕后,
{ d+dH1E$Qs*PW51Testing软件测试网变量allRuntimeObjects的值并没有任何改变软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具!W6KJ8}3P-a
www.51testing.com#b*X.O/g#s
X,V

拙劣之见,望兄台见谅!软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具;n%t
g1a7gP j4}


P?^
v4C@中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务
[ 本帖最后由 machao514 于 2008-3-28 19:49 编辑 ]
xmylll发布于2008-10-30 16:29:20

QUOTE:

原帖由 songfun 于 2007-5-17 00:04 发表
        F3p        E9UIid
X0t软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具
你没看懂程序的真正含义。中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务oQ0gLc[/V

W8w$l^B G-fhk中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务你只是单纯的理解去高亮显示计算器而已,而我的程序实际上可以高亮显示任意对象——只是列举了计算器为例子,实际上换个其他对象也可以。软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具'~$wo6U,U:Cx

7O K
{8OI0L8VE软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具
3B"{*s~'_v
中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务bNG.@"?        Nz I
可是QTP真有那么神奇吗?看着有些代码根本都不像代码,居然还能运行。
我来说两句

(可选)

日历

« 2024-04-20  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 453662
  • 日志数: 138
  • 图片数: 4
  • 建立时间: 2006-11-26
  • 更新时间: 2013-08-30

RSS订阅

Open Toolbar