51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3579|回复: 18
打印 上一主题 下一主题

[原创] 请问QTP里如何实现"复制".

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-8-27 16:02:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的问题是这样的:

    网页上有很多的目录, 选择其中的一个目录,点击 "Copy" 按钮, 然后选择另外一个目录, 再点击 "paste" 按钮.这个时候刚才复制的内容就显示在了text里面.只要点击"Add" 按钮就可以了. (注: 如果没有COPY东西就按"Paste" 按钮的话会有错误信息提示,要求用户先选择一个目录复制)

问题是:

      当回放的时候,点完"Paste" 按钮后页面上会有错误信息,同时QTP就不能往下走了,并提示"object is disable". (看起来好像是复制的时候没有成功, QTP支持这样的复制吗)

请高人指点
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2008-8-27 16:07:06 | 只看该作者
在线等候
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-8-27 16:45:58 | 只看该作者
QTP提示"object is disable"的时候页面是什么样的状况?有一个弹出对话框?

这类问题一般自己多调试下应该都能搞定的~~
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2008-8-27 17:14:01 | 只看该作者
原帖由 hsjzfling 于 2008-8-27 16:45 发表
QTP提示"object is disable"的时候页面是什么样的状况?有一个弹出对话框?

这类问题一般自己多调试下应该都能搞定的~~



当QTP提示"object is disable"的时候我要测试的页面上也出现了错误提示信息,这个测试页面上的错误信息是不应该出现的, 我在录制过程中没有出现这个.  这个测试页面上的错误信息的意思就是复制没成功.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-8-28 10:04:21 | 只看该作者
单步调试下,看哪一步没有按照预期的步骤来执行,然后再看为什么没执行。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2008-8-28 15:05:55 | 只看该作者
就是"paste"那一步出现问题了,没有paste成功.因为信息提示说剪贴板的内容为空,所以我觉得是COPY没成功。 QTP可以通过点击按钮来复制吗?
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-8-28 15:34:20 | 只看该作者
原帖由 angelia_liu 于 2008-8-28 15:05 发表
就是"paste"那一步出现问题了,没有paste成功.因为信息提示说剪贴板的内容为空,所以我觉得是COPY没成功。 QTP可以通过点击按钮来复制吗?


这个问法给人感觉怪怪的。。。复制功能是由页面上那个"复制"按钮及其所触发的脚本来实现的,并非由QTP来实现复制,QTP只是去点击那个按钮而已。

LZ要关注的问题是
1. 是否QTP执行速度过快,导致"复制"按钮所触发的复制功能都还未完成就去点击了"粘贴"按钮
2. QTP的某些机制与"复制"按钮的脚本有冲突导致复制功能失效

BTW,QTP有自己专门用来操作剪贴板的对象的~
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2008-8-28 16:26:51 | 只看该作者
非常感谢你的耐心指教
Browser("Merchandising Tool").Page("Page").WebList("appID").Select "102004 - Stage VIRTUAL: Ringtones Universe"
Browser("Merchandising Tool").Page("Page").Link("Edit Category").Click
Browser("Merchandising Tool").Page("Page").WebButton("Copy").Click
wait (20)
Browser("Merchandising Tool").Page("Page").Link("Add Category").Click
Browser("Merchandising Tool").Page("Page").WebButton("Paste").Click
wait (20)
Browser("Merchandising Tool").Page("Page").WebButton("Add").Click

这是我录制时的脚本.然后运行到Browser("Merchandising Tool").Page("Page").WebButton("Add").Click
时QTP就弹出了错误信息"object is disable".我现在可以肯定的是COPY已经成功了,因为COPY成功后会有提示信息.PASTE没有成功.
请指教.
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2008-8-28 16:30:12 | 只看该作者
为什么非要用这种方法呢?
在用例运行时从页面中取出该目录的value值,Set给另一个目录的Value值,不是更方便吗
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2008-8-28 16:34:42 | 只看该作者
原帖由 centurystone 于 2008-8-28 16:30 发表
为什么非要用这种方法呢?
在用例运行时从页面中取出该目录的value值,Set给另一个目录的Value值,不是更方便吗


不好意思,请问怎么set 呀,我是初学的,这是我手动录制的.
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2008-8-28 18:06:30 | 只看该作者
获取对象的value值:
Browser("...").Page("...").WebEdit("mp_2").getroproperty("value")
设置对象的value值:
Browser("...").Page("...").WebEdit("mp_2").Set "目录路径字符串"
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2008-8-28 18:07:14 | 只看该作者
系统不让发。晕
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2008-8-29 14:30:52 | 只看该作者
原帖由 centurystone 于 2008-8-28 18:06 发表
获取对象的value值:
Browser("...").Page("...").WebEdit("mp_2").getroproperty("value")
设置对象的value值:
Browser("...").Page("...").WebEdit("mp_2").Set "目录路径字符串"



你好,请问如果这样的话我的WebEdit里面的参数应该是什么呢?
我现在要获取的是一条数据,这数据里面可能还包括其他的一堆数据.
用这个方法的话我还要点击"COPY"按钮吗?
请指教该项怎么用.
非常感谢
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2008-8-30 12:48:06 | 只看该作者
天使小姐:

看了一下,你们上面说的.我有个小建议,也不知你愿不愿意用!- -

首先,用VBS取到剪贴板里的值,与你想copy的值对比,就可以知道程序是否正确啦!比简单的录制要有效.

至于怎么set值,那就要看你是要向什么对象set了,比方说,是webedit,那就好办啦!
将:
Browser("Merchandising Tool").Page("Page").WebButton("Paste").Click
这句改为:
Browser("Merchandising Tool").Page("Page").webedit("你的那个对象").set 剪贴板中的值

这样应该可以解决!
也就知道能不能帮到你!
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2008-8-31 14:07:29 | 只看该作者
新手,学习一下~~
回复 支持 反对

使用道具 举报

该用户从未签到

16#
 楼主| 发表于 2008-9-1 11:31:42 | 只看该作者
原帖由 dalinangel 于 2008-8-30 12:48 发表
天使小姐:

看了一下,你们上面说的.我有个小建议,也不知你愿不愿意用!- -

首先,用VBS取到剪贴板里的值,与你想copy的值对比,就可以知道程序是否正确啦!比简单的录制要有效.

至于怎么set值,那就要看你是要向什 ...



您好,谢谢你的帮助.
关于你说的怎么set值我还是有疑问,用你的方法是不是一次只能SET一个文本框里的内容呀.我现在是有好几个文本框里的内容要通过点击COPY按钮来获取,然后粘贴.

[ 本帖最后由 angelia_liu 于 2008-9-2 14:32 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2008-9-1 15:51:10 | 只看该作者

回复 13# 的帖子

非常感谢你的花啦
同时非常抱歉,好几天没来坛子了,
这个问题也很容易可以实现的。
我以前发过一个贴,里面有提到。(当然,高手就表看了,只限于中级以下的,因为偶水平有限)
http://bbs.51testing.com/thread-119684-1-1.html文档里的
《九.‘描述性编程为动态文本框赋值》章里有提到,附加实例,希望对你有所帮助
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2008-9-1 16:00:15 | 只看该作者

回复 13# 的帖子

给你贴出来吧。
九.        ‘描述性编程为动态文本框赋值
在自动化测试活动中经常会遇到为动态生成的文本框赋值的情况。例如:在订票系统中订一张票时,在下一页面只只显示一条记录;如果客户选择订两张以上的票据时,系统会自动生成相应数量的空记录数,那么此时自动化测试工具运行时就会出现问题。解决的方法如下:
我在QTP提供的测试网站做了如下操作
建立登录用户test
登录后选择订两张票,在后面填写乘客信息时会生成两条乘客信息(必录)
使用循环数组下标的方式计算出每个文本框的动态name值为每位乘客填写信息。
只要数组中用户信息定义没错,用例就没问题。
代码如下
'根据用户订票数量,循环录入录据信息
For i=0 to num-1
        'WebEdit的格式为:WebEdit("name:=WebEdit的name值"&当前循环数)
        IF(j<=2) THEN
                Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").WebEdit("name:=passFirst"&i).Set arrays(j)
                        j=j+1
                Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").WebEdit("name:=passLast"&i).Set arrays(j)
                        j=j+1
        msgbox("录入第"&i+1&"条记录完成")
        ELSE
                MSGBOX("数组下标越界")
        END IF
Next
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").WebEdit("creditnumber").Set "1"
回复 支持 反对

使用道具 举报

该用户从未签到

19#
 楼主| 发表于 2008-9-2 14:33:27 | 只看该作者
呵呵,谢谢各位了.
问题已经解决,只要设置一下"Web Event Recording Configuration" 就可以了.
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-15 03:17 , Processed in 0.085187 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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