51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1748|回复: 22
打印 上一主题 下一主题

问一个QTP自动化的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-10-22 15:54:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、录制WEB脚本时,我将对象、属性、属性值、操作、操作的值都录入到EXCEL文档中
2、将excel中的数据导入到qtp的datatable中

我准备直接利用datatable中的数据生成qtp脚本,但是使用datatable("","")读取时,qtp不能识别,请问有什么办法可以解决???
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-10-22 16:31:05 | 只看该作者
不能识别啥??先检查下DataTable()的列名和表名是否有误,然后用msgbox DataTable(,)看看是否能读出数据(或者用F11在Debug中看,专业些~~)

你是要做关键字驱动??如果是要做关键字驱动建议最好写一个解析动作的Function(直接访问Excel)放在VBS中调用,而不是通过QTP的DataTable
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-10-22 18:29:04 | 只看该作者
excel中的值如下:
Step        ObjectType        Property        _ctl5_GridPage        Index        Operation        Value
1        WebEdit        html id        _ctl5_txtPrjName_TextBox1                set       

生成QTP脚本时,对象的名称、属性的名称都是变量,
这个在QTP里不能识别,不知道有没有其他的方案取值
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-10-22 20:03:01 | 只看该作者

回复 3# 的帖子

你还是没回答我的问题。。。
1、 Msgbox DataTabel("Step",1)   能输出"1"来么
2、 你要达到什么效果?自动生成代码?你的解析数据的函数是怎么写的?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2007-10-23 09:39:11 | 只看该作者

回复 4# 的帖子

1、Msgbox DataTabel("Step",dtlocalSheet)   可以输出1
2、没有使用解析函数,直接使用Browser("title:="&Browser_name&"").Page("title:="&Page_name&"").datatable("ObjectType",dtlocalSheet)(""&datatable(" Property",dtlocalSheet)&":="&datatable("PropertyValue",dtlocalSheet)&"").datatable("Operation",dtlocalSheet)  datatable("Value",dtlocalSheet)
3、现在想要实现的功能是:想写一个公共的查询脚本,包括查询结果的验证,但是不同模块查询条件不一样,所以准备将查询条件的信息都记录在EXCEL中,然后导入到QTP的datatable,使用datatable()来生成脚本,运行后,好像行不通
4、希望有人提供其他的解决办法
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-10-23 10:10:43 | 只看该作者
这样做当然不行。。。

拼接字符串的思路是没问题,但是VBS虽然很傻瓜但也不是你怎么想它都能懂你想做什么的。。。
解决方法就是用Eval函数,比如我想执行msgbox "hello"
那么先拼字符串:str = "msgbox(" & chr(34) & "hello" & chr(34) & ")"
然后用Eval函数解释:Eval str
"hello"正确输出了~
实际上我做关键字驱动用的也是此函数~想来大家多半也是用的这个吧~
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2007-10-23 10:31:22 | 只看该作者

回复 6# 的帖子

呵呵 ,那我先试一下,不懂再问你啊
谢谢哦
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-10-23 11:06:53 | 只看该作者
顺便跟你分享个小窍门吧,不然可能你实现起来会比较麻烦~
1、 可以将从DataTable中的值先都分别赋值给对应的不同变量,比如iStep = DataTabkle("Step",dtLocalSheet)
2、 使用显示描述性编程而非隐式(临时)
这样的目的都是一个,为了在拼字符串时尽量避免被拼接字符串中含有"",从而只需要在需要解释的语句头尾加上""就可以了

[ 本帖最后由 hsjzfling 于 2007-10-23 11:42 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2007-10-23 14:06:48 | 只看该作者
还是有问题,提示我语法错误,但是解析出来的字符串是正确的

脚本如下:
Dim Title,Browser_name,Page_name,RowCount

Dim ObjectTypeName,PropertyName,PropertyValue,OperationName,OperationValue

Browser_name = "系统"

Page_name = "系统"

ObjectTypeName =datatable("B",dtlocalSheet)
PropertyName = datatable("C",dtlocalSheet)
PropertyValue = datatable("D",dtlocalSheet)
OperationName = datatable("F",dtlocalSheet)
OperationValue = datatable("H",dtlocalSheet)

'Browser("title:="&Browser_name&"").Page("title:="&Page_name&"").eval(ObjectTypeName)(""&eval(PropertyName)&":="&PropertyValue&"").EVAL(OperationName)  OperationValue
'Browser("title:="&Browser_name&"").Page("title:="&Page_name&"").WebEdit("html id:=_ctl5_txtPrjName_TextBox1").set  "9"
Dim aa
aa = "Browser(""title:="&Browser_name&""").Page(""title:="&Page_name&""")."& ObjectTypeName&"("""&PropertyName&":="&PropertyValue&""")."& OperationName&"  """& OperationValue&""""

datatable 的数据如下:
1        WebEdit        html id        _ctl5_txtPrjName_TextBox1                set                9
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2007-10-23 14:07:26 | 只看该作者
eval(aa)
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2007-10-23 14:44:20 | 只看该作者
实际上我在6楼的例子就已经告诉你了如果语句中有""应该怎么处理。不是"""就可以了的,而是需要用ASCII码来表示:Chr(34)
而在8楼中也提醒过你要尽可能避免语句中出现"",最好将隐式的描述性编程语句换为显式的,比如:
Dim oBrowser,oPage,oWebEdit
Set oBrowser = Description.Create()
Set oPage = Description.Create()
Set oWebEdit = Description.Create()
oBrowser("title").Value = Browser_name
oPage("title").Value = Page_name
oWebEdit("html id") = "_ctl5_txtPrjName_TextBox1" '这里的值也可以自己替换为相应的变量

str = "Browser(oBrowser).Page(oPage).WebEdit(oWebEdit)." & OperationName & " " & OperationValue
Eval str
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2007-10-23 16:51:15 | 只看该作者

回复 11# 的帖子

用你的方法后,还是提示语法错误,好像和引号没关系,应该和事件以及输入的值有关

我重新写了一段脚本,关于点击按钮的,两种方法都可以运行成功

但是WebEdit输入值的功能,两种方法都不行

有没有其他的解决办法???
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2007-10-23 17:07:19 | 只看该作者
直接写Eval("Browser(oBrowser).Page(oPage).WebEdit(oWebEdit)." & OperationName & " " & OperationValue)
这样应该就没问题了
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2007-10-23 17:18:06 | 只看该作者
还是语法错误
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2007-10-23 17:43:19 | 只看该作者
语法错误那就是字符串没拼对,也有可能是少了()吧,试试
str = "Browser(oBrowser).Page(oPage).WebEdit(oWebEdit)." & OperationName & " (" & OperationValue & ")"
回复 支持 反对

使用道具 举报

该用户从未签到

16#
 楼主| 发表于 2007-10-23 18:15:53 | 只看该作者
也不行
我将解析出的字符串直接运行,可以运行通过,使用EVAL就不行了
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2007-10-23 18:26:44 | 只看该作者
将Eval换成Execute再试试
回复 支持 反对

使用道具 举报

该用户从未签到

18#
 楼主| 发表于 2007-10-24 10:30:35 | 只看该作者
也不行,提示:Cannot find the "[ WebEdit ]" object's parent "[ Browser ]" (class Browser). Verify that parent properties match an object currently displayed in your application.
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2007-10-24 11:15:52 | 只看该作者
呵呵,那就不是Execute方法的问题了,语句现在已经被解释并执行了,这个错误信息表明你的Browser的描述性编程有点问题了,在程序中没有找到能匹配WebEdit的指定Browser父对象,就是说oBrowser("title").Value = Browser_name这个属性不对~

[ 本帖最后由 hsjzfling 于 2007-10-24 11:34 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

20#
 楼主| 发表于 2007-10-24 11:44:46 | 只看该作者
我觉得脚本肯定有问题,但是不是对象、属性匹配的问题

因为我使用脚本 Browser("&chr(34)&"title:="&Browser_name&chr(34)&").Page("&chr(34)&"title:="&Page_name&chr(34)&")."& ObjectTypeName&"("&chr(34)&PropertyName&":="&PropertyValue&chr(34)&")."& OperationName&chr(32)&chr(34)& OperationValue&chr(34)解析出来的字符串是可以执行的,那么匹配应该没问题,只是不能用EVAL、Execute执行
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-11 08:47 , Processed in 0.073971 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表