51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

问一个QTP自动化的问题

[复制链接]

该用户从未签到

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

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

使用道具 举报

该用户从未签到

23#
 楼主| 发表于 2007-10-24 13:24:15 | 只看该作者
我把QTP和IE重启后,使用Execute,已经执行成功了,非常感谢hsjzfling的帮助
回复 支持 反对

使用道具 举报

该用户从未签到

22#
发表于 2007-10-24 12:43:43 | 只看该作者

回复 21# 的帖子

你想实现的这个功能其实就有部分关键字驱动的思想了,关键字驱动我一般都是这么做的~

你在18楼贴出的错误信息除了对象不匹配还能用其它的理由来解释么。。。当然也有可能是某个地方有点小问题,但大方向上是没问题的,再重头尝试几次,多检查下吧~
回复 支持 反对

使用道具 举报

该用户从未签到

21#
 楼主| 发表于 2007-10-24 12:11:53 | 只看该作者
有没有其他的方案解决我要实现的功能
回复 支持 反对

使用道具 举报

该用户从未签到

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执行
回复 支持 反对

使用道具 举报

该用户从未签到

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

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

使用道具 举报

该用户从未签到

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.
回复 支持 反对

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

回复 11# 的帖子

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

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

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

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

使用道具 举报

该用户从未签到

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
回复 支持 反对

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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
回复 支持 反对

使用道具 举报

该用户从未签到

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

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

使用道具 举报

该用户从未签到

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

回复 6# 的帖子

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

使用道具 举报

该用户从未签到

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

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

使用道具 举报

该用户从未签到

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、希望有人提供其他的解决办法
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-9-21 19:44 , Processed in 0.084285 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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