L.E.O 发表于 2010-3-18 23:55:04

再次前来求助论坛的高手!希望大家能鼎力相助、谢谢!

现在想做一个WEB页面的测试
以下面的图为模板说说我想要达到的要求吧!

1、进入到这个页面以后,我要抓指定的标题名(怎么在检查点检查的内容不存在时,让测试报告中显示测试通过)中的(by 161958807)这个值出来。并输出。。。

2、问题:
   (1)、因为随着帖子的增加,标题(怎么在检查点检查的内容不存在时,让测试报告中显示测试通过)就会下沉到下面(先不考虑下沉到第二页),这个应该要怎么弄才能准确定位到这个标题名呢?
   (2)、随着回帖的人不断增多那么(by 161958807)这个值也会改变,这个又怎么弄才能准确定位到这个值并输出呢?

3、关于第二个个人觉得只要把问题1中的问题解决了应该就可以很轻松解决第二个问题了吧!

关于这个测试的脚本到现在都还没研究出来、麻烦高手出来指点一下吧!!比较急、关系到前途命运。。麻烦大家帮个忙吧!!谢谢了!!!

因为刚接触到QTP所以还是有很多不懂、请大家多多赐教。。。

zzxxbb112 发表于 2010-3-19 09:59:23

先把这个webtable对象取下来,然后调式下是这两列你需要的元素分别是在第几列
然后获取所有行数,进行遍历,遍历中并进行判断如果找到这个标题就获取对应行数的那列数据

具体方法可以F1 webtable

xiaoyaoke 发表于 2010-3-19 10:31:50

截了个图,楼主可以看看

我是用Firebug截图,楼主需要的信息基本可以从中找到

feiyunkai 发表于 2010-3-19 10:42:44

因为数据为多页时,QTP只能一页一页判断,效率特别低,所以建议直接连数据库取数据

以下代码实现了在所有页获取标题为: [求助] 再次前来求助论坛的高手!希望大家能鼎力相助、谢谢! 的最后回复人的名字和回复时间
For j=1 to 10000
      rowcount=Browser(" - 51Testing软件测").Page(" - 51Testing软件测").webtable("name:=folder_common").RowCount

For i=1 to rowcount
text=Browser(" - 51Testing软件测").Page(" - 51Testing软件测").webtable("name:=folder_common").GetCellData(i,3)

If text="[求助] 再次前来求助论坛的高手!希望大家能鼎力相助、谢谢!"then               
                        print( Browser(" - 51Testing软件测").Page(" - 51Testing软件测").webtable("name:=folder_common").GetCellData(i,6))
End If

Next

IfBrowser(" - 51Testing软件测").Page(" - 51Testing软件测").Link("››").Exist Then
                Browser(" - 51Testing软件测").Page(" - 51Testing软件测").Link("››").Click
                else
                Exit for
End If

Next

[ 本帖最后由 feiyunkai 于 2010-3-19 14:14 编辑 ]

feiyunkai 发表于 2010-3-19 10:55:33

数据库中取数据

假设数据库中存放标题的字段为:title,存放最后回复人的字段为:user_re则:

set conn = CreateObject("ADODB.Connection")   '创建连接
conn.C '设置连接字符串   
conn.open '开启连接
If conn.state = 0 Then   '如果连接状态为0,表示连接失败,否则表示连接成功
    Reporter.ReportEvent micFail,"测试连接","连接失败"
else
   Reporter.ReportEvent micPass,"测试连接","连接成功"
Set yuju=CreateObject("ADODB.Recordset")         '创建记录对象
Do
sql="select user_re from info where title='[求助] 再次前来求助论坛的高手!希望大家能鼎力相助、谢谢!'
yuju.open sql,Conn,1,3                                                                  
print(yuju("user_re"))                                                         
yuju.movenext
End If
loop until yuju.eof=true '到达最后一条,停止循环
next
这样就可以显示所有名称为[求助] 再次前来求助论坛的高手!希望大家能鼎力相助、谢谢!的最后回复人和回复时间了
如果想使用变量则把sql="select user_re from info where title='[求助] 再次前来求助论坛的高手!希望大家能鼎力相助、谢谢!'
修改为:
title="[求助] 再次前来求助论坛的高手!希望大家能鼎力相助、谢谢!"
sql="select user_re from info where title='"+title+"'

[ 本帖最后由 feiyunkai 于 2010-3-19 11:00 编辑 ]

feiyunkai 发表于 2010-3-19 11:01:47

原帖由 feiyunkai 于 2010-3-19 10:55 发表 http://bbs.51testing.com/images/common/back.gif
假设数据库中存放标题的字段为:title,存放最后回复人的字段为:user_re则:

set conn = CreateObject("ADODB.Connection")   '创建连接
conn.C '设置连接字符串   
conn.open '开启连接
If conn.state =...
conn.C '设置连接字符串   的代码没显示出来,完整代码见附件

[ 本帖最后由 feiyunkai 于 2010-3-19 11:04 编辑 ]

zhengpeipei 发表于 2010-3-19 13:13:35

路过

L.E.O 发表于 2010-3-19 17:36:54

真诚的感谢feiyunkai网友!!

谢谢!!

L.E.O 发表于 2010-3-20 00:15:46

原帖由 feiyunkai 于 2010-3-19 10:42 发表 http://bbs.51testing.com/images/common/back.gif
以下代码实现了在所有页获取标题为: [求助] 再次前来求助论坛的高手!希望大家能鼎力相助、谢谢! 的最后回复人的名字和回复时间
For j=1 to 10000
      rowcount=Browser(" - 51Testing软件测 ...

请问feiyunkai

我在录制的时候出现这个错误、应该怎么解决?

我现在是以51testing论坛的这个网页在测试。。。

sean007 发表于 2010-3-20 11:18:57

:lolGood !收下 ~ 那如果 要进行两次的 SQL 使用 如何 使用 ?

feiyunkai 发表于 2010-3-22 13:35:41

原帖由 L.E.O 于 2010-3-20 00:15 发表 http://bbs.51testing.com/images/common/back.gif


请问feiyunkai

我在录制的时候出现这个错误、应该怎么解决?

我现在是以51testing论坛的这个网页在测试。。。

因为你没有把对象添加到对象库,所以会报错,打开QTP,按CTRL+R,点击+号按钮,把对应的对象添加到对象库就可以了
将求助中的任一贴子加到对象库,再将>>翻页控件添加到对象库就可以了

另外一种方法是使用描述性编程,但是由于描述性编程原理是通过页面属性去查找对应的对象,所以页面元素特别多或页面结构比较复杂的时候,效率会特别低,所以本脚本中不建议使用描述性编程

feiyunkai 发表于 2010-3-22 13:37:17

原帖由 sean007 于 2010-3-20 11:18 发表 http://bbs.51testing.com/images/common/back.gif
:lolGood !收下 ~ 那如果 要进行两次的 SQL 使用 如何 使用 ?

可以把上面的脚本封装成函数,将SQL语句等信息以参数形式传入,这样在用到SQL连接的时候直接调用该函数就可以了

L.E.O 发表于 2010-3-22 22:00:44

我再试试看
页: [1]
查看完整版本: 再次前来求助论坛的高手!希望大家能鼎力相助、谢谢!