angelia_liu 发表于 2008-8-27 16:02:59

请问QTP里如何实现"复制".

我的问题是这样的:

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

问题是:

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

请高人指点

angelia_liu 发表于 2008-8-27 16:07:06

在线等候:'(

hsjzfling 发表于 2008-8-27 16:45:58

QTP提示"object is disable"的时候页面是什么样的状况?有一个弹出对话框?

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

angelia_liu 发表于 2008-8-27 17:14:01

原帖由 hsjzfling 于 2008-8-27 16:45 发表 http://bbs.51testing.com/images/common/back.gif
QTP提示"object is disable"的时候页面是什么样的状况?有一个弹出对话框?

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


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

hsjzfling 发表于 2008-8-28 10:04:21

单步调试下,看哪一步没有按照预期的步骤来执行,然后再看为什么没执行。

angelia_liu 发表于 2008-8-28 15:05:55

就是"paste"那一步出现问题了,没有paste成功.因为信息提示说剪贴板的内容为空,所以我觉得是COPY没成功。 QTP可以通过点击按钮来复制吗?

hsjzfling 发表于 2008-8-28 15:34:20

原帖由 angelia_liu 于 2008-8-28 15:05 发表 http://bbs.51testing.com/images/common/back.gif
就是"paste"那一步出现问题了,没有paste成功.因为信息提示说剪贴板的内容为空,所以我觉得是COPY没成功。 QTP可以通过点击按钮来复制吗?

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

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

BTW,QTP有自己专门用来操作剪贴板的对象的~

angelia_liu 发表于 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没有成功.
请指教.

centurystone 发表于 2008-8-28 16:30:12

为什么非要用这种方法呢?:o :o
在用例运行时从页面中取出该目录的value值,Set给另一个目录的Value值,不是更方便吗

angelia_liu 发表于 2008-8-28 16:34:42

原帖由 centurystone 于 2008-8-28 16:30 发表 http://bbs.51testing.com/images/common/back.gif
为什么非要用这种方法呢?:o :o
在用例运行时从页面中取出该目录的value值,Set给另一个目录的Value值,不是更方便吗

不好意思,请问怎么set 呀,我是初学的,这是我手动录制的.

centurystone 发表于 2008-8-28 18:06:30

获取对象的value值:
Browser("...").Page("...").WebEdit("mp_2").getroproperty("value")
设置对象的value值:
Browser("...").Page("...").WebEdit("mp_2").Set "目录路径字符串"

centurystone 发表于 2008-8-28 18:07:14

系统不让发。晕

angelia_liu 发表于 2008-8-29 14:30:52

原帖由 centurystone 于 2008-8-28 18:06 发表 http://bbs.51testing.com/images/common/back.gif
获取对象的value值:
Browser("...").Page("...").WebEdit("mp_2").getroproperty("value")
设置对象的value值:
Browser("...").Page("...").WebEdit("mp_2").Set "目录路径字符串"


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

dalinangel 发表于 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 剪贴板中的值

这样应该可以解决!
也就知道能不能帮到你!

dennywang 发表于 2008-8-31 14:07:29

:)新手,学习一下~~

angelia_liu 发表于 2008-9-1 11:31:42

原帖由 dalinangel 于 2008-8-30 12:48 发表 http://bbs.51testing.com/images/common/back.gif
天使小姐:

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

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

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


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

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

centurystone 发表于 2008-9-1 15:51:10

回复 13# 的帖子

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

centurystone 发表于 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"

angelia_liu 发表于 2008-9-2 14:33:27

呵呵,谢谢各位了.
问题已经解决,只要设置一下"Web Event Recording Configuration" 就可以了.
页: [1]
查看完整版本: 请问QTP里如何实现"复制".