applebugs 发表于 2006-8-19 14:00:56

怎么取到没有显示在表单中的某个字段的值?(较高深)

场景1:在录制和写QTP脚本时,需要设置一个检查点,既判断某个资源预定结束时间是否是预定开始时间+3个工作日(精确到时分秒),但预定开始时间并没有显示在页面的表单中(注:这些字段存在一个表中),请问大家,怎么写脚本实现这个检查点的功能?

场景2:当取到预定开始时间和预定结束时间后,怎么写脚本实现,根据两值比较大小的不同,去检查在页面上抛出不同的信息提示,而这些信息是我期望的?

场景3:当在页面上,取消某个资源的预定记录,code会根据当前记录的预定投放周期后,有否另外预定记录,若有,成功取消,反之则抛出期望的信息提示。
此检查点又怎么实现呢?

场景4:对于某个用户登陆到系统后,他能够看到或操作哪些字段(权限的控制,是存在表中的),怎么关联这些表的记录和username 来决定其操作权限是否合法,怎么用QTP 脚本的检查点来实现?

我的初步想法,可能需要QTP去和数据库交互去验证,但很难找到这方面的实例,所以到这里来和高手探讨,向大家学习呀。。。

提示:对于回答的人来说,如果我的问题让你,不是有耐心的,具体的回答,也请建议我:在提问的问题上有哪些疏忽,谢谢。

[ 本帖最后由 applebugs 于 2006-8-19 14:30 编辑 ]

xiaonan 发表于 2006-8-19 22:48:03

场景1:"我的初步想法,可能需要QTP去和数据库交互去验证,但很难找到这方面的实例,所以到这里来和高手探讨,向大家学习呀。。。"
的确可以通过QTP直接去连数据库来取值.其实也就是用vbscript与数据库通过ado来连接.如果楼主不清楚代码怎么写,可以搜一下帖子,这方面的太多了,怎么会找不到呢?这里先给你一段.
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="selec t * from 表 where name=username"
Cmd.CommandText = sql
Set res = Cmd.Execute()
Set res = nothing
Set cmd.ActiveConnection = nothing
Set Cmd= nothing

场景2:取到两个时间后,你用if语句来判断一下就行了,然后加Reporter.ReportEvent 就会把结果打到结果记录里去了.
if 预定开始时间=预定结束时间 then
Reporter.ReportEvent 0, "验证正确"," pass"
else
Reporter.ReportEvent 1, "验证错误"," failed"
end if

场景3:你可以判断期望的信息提示是否被抛出来判断.
场景4:你也可以直接通过从数据库取值来判断

[ 本帖最后由 xiaonan 于 2006-8-19 22:49 编辑 ]

applebugs 发表于 2006-8-21 18:47:15

我的数据库是用oracle 9i的,我在研究研究,搞定后大家再分享分享,大家先讨论讨论

lyscser 发表于 2006-8-22 08:34:55

进来拜高手

xiaonan 发表于 2006-8-22 09:51:00

oracle 的一样可以啊,只是数据源设置有所不同而已

QA_BAY 发表于 2006-8-22 11:30:11

可以参考一下以下代码:
Oracle格式:(本地需要安装Oracle ODBC DRIVER)
connectionstring(连接字符串):
1.本地没有创建数据源的方式
DRIVER={Oracle in OraHome92};SERVER=数据库服务名;UID=用户名;PWD=密码;DBQ=数据库名;DBA=W;APA=T;EXC=F;XSM= Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=Lo;BAM=IfAllSuccessful;MTS=F;MDI=Me;CSR=F;FWC=F;PFC=10;TLO=O;

实例:
DRIVER={Oracle in OraHome92};SERVER=DCWORK;UID=DCWORK;PWD=DCWORK;DBQ=DCWORK;DBA=W;APA=T;EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=Lo;BAM=IfAllSuccessful;MTS=F;MDI=Me;CSR=F;FWC=F;PFC=10;TLO=O;



2.本地已创建数据源的方式
DSN=数据源名称;UID=用户名;PWD=密码;DBQ=数据库名;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10; FDL=10;LOB=T;RST=T;GDE=F;FRL=F;BAM=IfAllSuccessful;MTS=F;MDI=F;CSR=F;FWC=F;PFC=10;TLO=0;

实例:
DSN=dcworkoracle;UID=DCWORK;DBQ=DCWORK;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=F;BAM=IfAllSuccessful;MTS=F;MDI=F;CSR=F;FWC=F;PFC=10;TLO=0;

3.SQL语句实例
source:SQL语句
SELECT HR_LANGUAGE_TYPE.LANGUAGE_NAMEFROM DCWORK.HR_LANGUAGE_TYPE HR_LANGUAGE_TYPEWHERE (HR_LANGUAGE_TYPE.LANGUAGE_NAME='中文')ORDER BY HR_LANGUAGE_TYPE.LANGUAGE_NAME

applebugs 发表于 2006-8-23 10:29:59

经整理后QTP与oracle连接

Dim Cnn
Dim Rst
Dim strCnn
Dim TestNumberOne
Dim TestNumberTwo
strCnn = "Provider=MSDAORA.1;Data Source=yourtnsname;Password=yourpassword;User ID=youruserid;Persist Security Info=True"
Set Cnn = CreateObject("ADODB.Connection")

Cnn.Open strCnn

Set Rst =CreateObject("ADODB.Recordset")
Rst.open "select *From table_name where id in (300041, 300040)", Cnn
Rst.MoveFirst
Do while Rst.EOF <> True
        TestNumberOne = Trim(Rst.Fields(8))
        TestNumberTwo = Trim(Rst.Fields(9))

       msgboxTestNumberOne
       msgboxTestNumberTwo

       
        If TestNumberOne < TestNumberTwo Then

          Reporter.ReportEvent micPass, "testing", "开始时间小于结束时间"       
        else
          Reporter.ReportEvent micFail, "testing",   "开始时间大于等于结束时间"
        End If

        Rst.MoveNext
       
Loop

applebugs 发表于 2006-8-23 10:33:24

怎么取到WEB server(linux)系统的当前时间?

原帖由 applebugs 于 2006-8-19 14:00 发表
场景1:在录制和写QTP脚本时,需要设置一个检查点,既判断某个资源预定结束时间是否是预定开始时间+3个工作日(精确到时分秒),但预定开始时间并没有显示在页面的表单中(注:这些字段存在一个表中),请问大家, ...


对于场景1的case,预定的开始时间,要大于当前的系统时间(linux web server),请问怎么取到该值呀?

applebugs 发表于 2006-8-23 13:31:51

自顶一个

自顶一个

netsky_lt 发表于 2006-12-7 15:52:38

系统时间就不知了,数据库时间可以吗?
例:set rs1 = conn.Execute("select SYSDATE()")
      time1 = rs1("SYSDATE()").Value

Nicole_wzy 发表于 2007-12-5 12:51:23

杂看不懂哟,要学习一下

Jor 发表于 2007-12-5 15:52:43

试试看这个。。
Set myCmd = CreateObject("WScript.Shell")
myCmd.Run "cmd /c net time \\ip >> C:\test.txt"
set myCmd = nothing

双面人 发表于 2007-12-6 10:55:58

果然有高手

angelia_liu 发表于 2009-1-15 15:54:10

学习学习呀

luxiuxiu1987 发表于 2010-9-26 15:52:07

页: [1]
查看完整版本: 怎么取到没有显示在表单中的某个字段的值?(较高深)