51Testing软件测试论坛

标题: 如何对查寻出来的显示结果根据数据库的查询sql进行检查 [打印本页]

作者: aprina    时间: 2006-7-6 11:34
标题: 如何对查寻出来的显示结果根据数据库的查询sql进行检查
有一个查询界面 , 查询结果中有一个总记录条数的显示: 第1页 共3页 共21条. 想做以下检查
用sql 在数据库中查询到该查询结果的条数,然后再用它跟显示中的"21"进行比较。

怎样写这样的脚本呢?以前有例子吗?
作者: xiaonan    时间: 2006-7-6 12:46
你这就是一个连接数据库的问题,已经有很多帖子讲到了.参考一下这段代码
Dim res,cmd,sql
Set Res=createobject("adodb.recordset")
Set Cmd=createobject("adodb.command")
Cmd.activeconnection="Provider=SQLOLEDB.1;Password=111111;Persist Security Info=True;User ID=sa;Initial Catalog=xhq;Data Source=192.168.191.142"
Cmd.CommandType = 1
sql="select name from company where (id=1)"
Cmd.CommandText = sql
Set res = Cmd.Execute()
Set res = nothing
Set cmd.ActiveConnection = nothing
Set Cmd= nothing
作者: aprina    时间: 2006-7-6 14:27
可能是我没表达清楚, 连接数据库的方法已经在论坛里找到了,也已经调试通过了.
但是我不知道怎样在expert view中,把" 第1页 共3页 共21条" 这个界面显示的对象提出来.录制后的脚本是这样的:
Browser("查询页面").Page("查询页面1").WebEdit("WebEdit").Set "2006-05-06 00:00:00"
Browser("查询页面").Page("查询页面1").WebEdit("WebEdit_2").Set "2006-07-06 10:30:30"
Browser("查询页面").Page("查询页面1").WebButton("查 询").Click
Browser("查询页面").Page("查询页面1").Sync
在active screen中,有显示     第1页 共3页 共21条。 建附件图

我想用脚本把这个“21” 跟数据库中的sql查询出来的结果做比较,数据库的查询连接等脚本已经ok了,但是怎样在脚本中把这个"21" 的对象表示出来?
Dim res, cmd, sql,num
Set res = CreateObject("adodb.recordset")
Set cmd = CreateObject("adodb.command")
Set conn = CreateObject("ADODB.Connection")
conn.Open "lnkfdev", "kf", "kf"
cmd.ActiveConnection = conn
cmd.CommandType = 1
sql = "select count(seat_id) from fm_seat "
cmd.CommandText = sql
Set res = cmd.Execute(sql)
num=Cint(res.fields(0))
if ....
作者: xiaonan    时间: 2006-7-6 17:26
用GetROProperty方法,找到该对象的相应属性给取出来啊.
列如:a=Window("Flight Reservation").WinEdit("Order No:").GetROProperty("Text")
还有稍微提一句,你可以直接把图片放在附件里上传上来,别人也容易看.你放在一个文档里打开麻烦
作者: aprina    时间: 2006-7-6 21:07
var_GetROProperty = Browser("查询页面").Page("查询页面").WebElement("共 21 条").GetROProperty("Text")
msgbox var_GetROProperty

这一句为什么总返回是  空 呢? var_GetROProperty 总是为空, 我希望返回的是 WebElement中的  "共 21 条". 在object reporsitory 中看到 了这个object 了. 帮忙点拨一下.
作者: xiaonan    时间: 2006-7-7 09:05
你用object spy看一下这个对象的属性,看看描述这个值的是哪个属性名,不一定是text的,
作者: aprina    时间: 2006-7-7 14:25
调试通过了,下面是完整脚本.谢谢xiaonan. 但是还有一个问题请教, WebElement("共 21 条") 这个"21"是变化的, 怎样去定义呢?

Browser("系统").Page("系统").Frame("FrameMain").Image("03_tsyjy_2").FireEvent "onmouseover"
Browser("系统").Page("系统").Frame("FrameMain").Image("03_tsyjy_2").Click
Browser("系统").Page("系统").Frame("FrameMain").WebElement("查询").Click
Browser("查询页面").Page("查询页面").WebEdit("WebEdit").Set "2006-05-06 00:00:00"
Browser("查询页面").Page("查询页面").WebEdit("WebEdit_2").Set "2006-07-06 10:30:30"
Browser("查询页面").Page("查询页面").WebButton("查 询").Click
Browser("查询页面").Page("查询页面").Sync

Public var_GetROProperty
var_GetROProperty = Browser("查询页面").Page("查询页面").WebElement("共 21 条").GetROProperty("innerText")
str1=Instr(var_GetROProperty," ")

''**********替代字串函数
Function ReplaceTest(patrn, replStr)
   Dim regEx                 ' Create variables.
   Set regEx = New RegExp            ' Create regular expression.
          regEx.Pattern = patrn            ' Set pattern.
          regEx.IgnoreCase = True            ' Make case insensitive.
          ReplaceTest = regEx.Replace(var_GetROProperty, replStr)   ' Make replacement.
End Function

'*********剔除获取变量字符串的空格,并去掉第一个及最后一个字符
Dim str1,str2,str3
Do while str1<>0
    str1=Instr(var_GetROProperty," ")
        str2=ReplaceTest(" ","")  
        var_GetROProperty=str2
        Msgbox str1
        Msgbox str2
Loop

str3=Right(var_GetRoProperty, Len(var_GetRoProperty)-1) '向右移一个字符显示
var_GetRoProperty=Left(str3,Len(str3)-1) '向左移一个字符显示


'*********与数据库内容比较
Dim res, cmd, sql,num
Set res = CreateObject("adodb.recordset")
Set cmd = CreateObject("adodb.command")
Set conn = CreateObject("ADODB.Connection")
conn.Open "lnkfsc", "kf", "kf123"
cmd.ActiveConnection = conn
cmd.CommandType = 1
sql = "select count(*) from as_work_accept where accept_date >= to_date('2006-05-06 00:00:00','yyyy-mm-dd hh24:mi:ss') and accept_date <=to_date('2006-07-06 10:30:30','yyyy-mm-dd hh24:mi:ss')"
cmd.CommandText = sql
Set res = cmd.Execute(sql)
num=Cint(res.fields(0))
If num= var_GetROProperty-1 Then
   Reporter.ReportEvent micpass, "test", "output"
Else
   Reporter.ReportEvent micfail, "testl", "fail"
End If
conn.Close
Set res = Nothing
Set cmd = Nothing
Set conn = Nothing
作者: volvoo    时间: 2006-7-7 17:59
标题: 你这样编码如何适应变化
var_GetROProperty = Browser("查询页面").Page("查询页面").WebElement("共 21 条").GetROProperty("innerText")

WebElement("共 21 条")  "共 21 条" 应该用正则表达式,名字怎么叫都可以,只要对上就可以了
作者: netsky_lt    时间: 2006-7-12 11:56
“共 21 条” 中的“21” ,可以在录制时设置为输出值检查点吗?然后再赋值给一个变量,再作比较/
作者: aprina    时间: 2006-7-13 21:11
没有对上面的脚本做任何修改,当实际运行时,数据库内只有17条,并且显示也是"共17条" , 运行后,结果为本passed. 只是result报告中给了以下warning. 这样的结果已经是我需要的了.多谢各位 .


Object  Details  Result  Time  
   
"共 21 条"- Smart Identification The smart identification mechanism was invoked.

Reason: object not found.

Original description:
micclass=WebElement
innertext=共 21 条
html tag=LABEL

Smart Identification Alternative Description:

Base filter properties (20 objects found)
micclass=WebElement
html tag=LABEL

Optional filter properties
html id=FootTable_SearchAppealResultTable_RowCount (Used, 1 matches)
class= (Ignored)
innertext=共 21 条 (Ignored)
visible=-1 (Ignored)
Done 2006-7-13 - 20:48:47




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2