怎么取到没有显示在表单中的某个字段的值?(较高深)
场景1:在录制和写QTP脚本时,需要设置一个检查点,既判断某个资源预定结束时间是否是预定开始时间+3个工作日(精确到时分秒),但预定开始时间并没有显示在页面的表单中(注:这些字段存在一个表中),请问大家,怎么写脚本实现这个检查点的功能?场景2:当取到预定开始时间和预定结束时间后,怎么写脚本实现,根据两值比较大小的不同,去检查在页面上抛出不同的信息提示,而这些信息是我期望的?
场景3:当在页面上,取消某个资源的预定记录,code会根据当前记录的预定投放周期后,有否另外预定记录,若有,成功取消,反之则抛出期望的信息提示。
此检查点又怎么实现呢?
场景4:对于某个用户登陆到系统后,他能够看到或操作哪些字段(权限的控制,是存在表中的),怎么关联这些表的记录和username 来决定其操作权限是否合法,怎么用QTP 脚本的检查点来实现?
我的初步想法,可能需要QTP去和数据库交互去验证,但很难找到这方面的实例,所以到这里来和高手探讨,向大家学习呀。。。
提示:对于回答的人来说,如果我的问题让你,不是有耐心的,具体的回答,也请建议我:在提问的问题上有哪些疏忽,谢谢。
[ 本帖最后由 applebugs 于 2006-8-19 14:30 编辑 ] 场景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 编辑 ] 我的数据库是用oracle 9i的,我在研究研究,搞定后大家再分享分享,大家先讨论讨论 进来拜高手 oracle 的一样可以啊,只是数据源设置有所不同而已 可以参考一下以下代码:
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
经整理后QTP与oracle连接
Dim CnnDim 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
怎么取到WEB server(linux)系统的当前时间?
原帖由 applebugs 于 2006-8-19 14:00 发表场景1:在录制和写QTP脚本时,需要设置一个检查点,既判断某个资源预定结束时间是否是预定开始时间+3个工作日(精确到时分秒),但预定开始时间并没有显示在页面的表单中(注:这些字段存在一个表中),请问大家, ...
对于场景1的case,预定的开始时间,要大于当前的系统时间(linux web server),请问怎么取到该值呀?
自顶一个
自顶一个 系统时间就不知了,数据库时间可以吗?例:set rs1 = conn.Execute("select SYSDATE()")
time1 = rs1("SYSDATE()").Value 杂看不懂哟,要学习一下 试试看这个。。
Set myCmd = CreateObject("WScript.Shell")
myCmd.Run "cmd /c net time \\ip >> C:\test.txt"
set myCmd = nothing 果然有高手 学习学习呀 赞
页:
[1]