xiaonan 发表于 2006-5-30 12:14:42

Browser("网站后台管理系统").Page("网站后台管理系统").WebEdit("username").Set DataTable("Pname", dtGlobalSheet)
在这句后面加一句话,把name传给username
用类似这样的方法取
usname = Browser("网站后台管理系统").Page("网站后台管理系统").WebEdit("username").GetROProperty("Text")
这句话不一定正确,你自己看一下

然后,你要不直接用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

michaelyung 发表于 2006-5-30 12:36:48

to xueboy118:
你这是将录制和descriptive programming搅在一起了。
在expert view中看到录制的语句隐藏了很多的描述性语句(意思是说你看到的语句已经封装了一些二进制执行数据,不是真正的编程语句,所以不能简简单单那样写,除非你用keyword view操作)。要得到你放在globalsheet中的参数值,可以在expert view中用编程语句这样写:
Dim varSheet, strName
Set varSheet = DataTable.GlobalSheet
strName = varSheet.GetParameter("pName").Value
这里strName就是你所要的值了。

[ 本帖最后由 michaelyung 于 2006-5-30 12:38 编辑 ]

Horus_Ra 发表于 2006-5-30 13:23:45

不需要那么麻烦吧,各位??

数据库中一般都有一个字增长的字段,比如ID什么的,取Top 1就行了~

没有的话,你就不要用数据库检查点了,用21楼的方法将数据取出来再判断好了~

xueboy118 发表于 2006-5-30 13:56:44

我的脚本现修改如下:
Browser("网站后台管理系统").Page("网站后台管理系统").WebEdit("username").Set DataTable("Pname", dtGlobalSheet)
usname = Browser("网站后台管理系统").Page("网站后台管理系统").WebEdit("username").GetROProperty("Text")
Browser("网站后台管理系统").Page("网站后台管理系统").WebEdit("password").SetSecure "447bc007c1401dd4511996463d35fd01"
Browser("网站后台管理系统").Page("网站后台管理系统").WebButton("登 录").Click
Dim res,cmd,sql
Set Res=createobject("adodb.recordset")
Set Cmd=createobject("adodb.command")
Cmd.activeconnection="Provider = Sqloledb; User ID = sa; Password = sa; Initial Catalog =bb; Data Source = 192.168.5.196 "
Cmd.CommandType = 1
sql="selec t*from admin_userwhere name=username"
Cmd.CommandText = sql
Set res = Cmd.Execute()
Set res = nothing
Set cmd.ActiveConnection = nothing
Set Cmd= nothing
Browser("网站后台管理系统").Page("网站后台管理").Sync

执行后 QuickTest报错,提示如下:
第 1 行: '*' 附近有语法错误。
有一黄色小箭头指向          Set res = Cmd.Execute()    这一句

xueboy118 发表于 2006-5-30 14:06:03

michaelyung ,你的方法我还是不是很明白,如你所说,在expert view中用
Dim varSheet, strName
Set varSheet = DataTable.GlobalSheet
strName = varSheet.GetParameter("pName").Value
把我想要的值取出,在Database checkpoint的检查点中又该如何使用?

xiaonan 发表于 2006-5-30 14:12:28

原帖由 xueboy118 于 2006-5-30 13:56 发表
我的脚本现修改如下:
Browser("网站后台管理系统").Page("网站后台管理系统").WebEdit("username").Set DataTable("Pname", dtGlobalSheet)
usname = Browser(" ...

晕,怎么不变通一下
问题出在"select * from   表 where name=usename"
usename是一个变量,这样写表明它是一个常量.
应该用个连接符,这样写"select * from 表 where name="&usename

xiaonan 发表于 2006-5-30 14:15:33

我前面给你的代码有点疏忽,不过不要我怎么写你就怎么写啊,先把代码给看懂了,select 我写成这样了selec t,你也这么写???

xueboy118 发表于 2006-5-30 14:30:05

呵呵,xiaonan ,不好意思 ,我已经N常时间没用VB了,都忘光了,你开始给的连接数据库的数据源那句就在我机器上报错,还时找人改的,改好人家就走了,我只能自己瞎折腾了。
我刚用了你说的方法,还是报同样的错。

michaelyung 发表于 2006-5-30 14:41:41

原帖由 xueboy118 于 2006-5-30 14:06 发表
michaelyung ,你的方法我还是不是很明白,如你所说,在expert view中用
Dim varSheet, strName
Set varSheet = DataTable.GlobalSheet
strName = varSheet.GetParameter("pName").Value
把我想要的 ...

嗯……我都不知道怎么说了,我觉得你把录制到的语句当成原始的编程语句了,然后使劲在录制和编程间折腾,结果还把自己搞糊涂了。你前面的Browser()那些是QTP录制呈现给你的语句,和后面那部分(比如xiaonan给你提供的程序有着本质的不同)。你写程序时如果只这样写Browser("") 肯定是错的的。
这样吧:把你录制得到的可运行的语句拷贝出来,重新开一个新的Test,再把之前的语句粘贴进去(不要录制),你再运行下,肯定是不行的。不知道你是否会明白点。

其实明白这个不同后,你的问题是非常简单的一个问题。采用任何一个方法,或者综合两者的方法都行。

我的意思:你没搞清楚两者的区别,弄清楚了选择其中一个去做(比如descriptive programming,现在我们都根本不去用录制了),不就是编程嘛,把录制的思想抛弃掉,写代码,得到一个值,再取出一个值,两者一比较就是。

[ 本帖最后由 michaelyung 于 2006-5-30 14:44 编辑 ]

xueboy118 发表于 2006-5-30 14:51:50

我要晕了,是你们水平太高了,还时我太差劲了,我是刚用QuickTest没多久呀
我的录制脚本就这么一点,如下:
Browser("网站后台管理系统").Page("网站后台管理系统").WebEdit("username").Set "admin"
Browser("网站后台管理系统").Page("网站后台管理系统").WebEdit("password").SetSecure "447bc007c1401dd4511996463d35fd01"
Browser("网站后台管理系统").Page("网站后台管理系统").WebButton("登 录").Click
Browser("网站后台管理系统").Page("网站后台管理").Sync

要求很简单,就是用“admin”作参数,在数据库中找一条记录,在cliak事件后添加个 Database checkpoint的检查点,或是别的什么检查点,只要能检查出数据库中存在这一条记录就ok了。
谁能帮我改改!!!

michaelyung 发表于 2006-5-30 15:08:27

我也要晕了。
你能得到admin参数化的值不就可以了吗,你的目的就是将admin参数化啊。其他的检查就是编程啊,跟QTP的关系都不大了。如果你的database能可视化,那就继续录制。如果不可以,编程获取到数据库的该项,一个比较不就出来了??

[ 本帖最后由 michaelyung 于 2006-5-30 15:09 编辑 ]

michaelyung 发表于 2006-5-30 15:17:24

原帖由 xueboy118 于 2006-5-30 14:51 发表
我要晕了,是你们水平太高了,还时我太差劲了,我是刚用QuickTest没多久呀
我的录制脚本就这么一点,如下:
Browser("网站后台管理系统").Page("网站后台管理系统").WebEdit("userna ...

基于你们的我改一下,不需要录制,大致就是这样:

Dim objParent, strName, strPassword   
strName = ""
strPassword=""               ' here you can define it or get it from a .xls file.
Set objParent = Browser("title:=网站后台管理系统").Page("title:=网站后台管理系统")
objParent.WebEdit("text:=username").Set strName
objParent.WebEdit("text:=password").Set strPassword
objParent.WebButton("text:=登 录").Click

Dim res,cmd,sql
Set Res=createobject("adodb.recordset")
Set Cmd=createobject("adodb.command")
Cmd.activeconnection="Provider = Sqloledb; User ID = sa; Password = sa; Initial Catalog =bb; Data Source = 192.168.5.196 "      'use the correct info for your database.
Cmd.CommandType = 1
sql="select*from admin_userwhere name="&strName
Cmd.CommandText = sql
Set res = Cmd.Execute()

// here you got the results from searching the database.

Set res = nothing
Set cmd.ActiveConnection = nothing
Set Cmd= nothing

objParent.sync()

我觉得自动化测试,应该尽量将你要参数化的数据放入一个xls文件中,这样不用你手工输入,而且易于添加多个数据项给测试。这就是上面说要参数化的数据可以从xls文件中获取到。

如果你用录制,将strName 参数化后不是有一个变量名吗,后面就用此名就可以了啊,唉,很简单的问题,结果说的我自己都觉得麻烦了。

[ 本帖最后由 michaelyung 于 2006-5-30 15:24 编辑 ]

xueboy118 发表于 2006-5-30 15:18:26

我也知道接着就是要编程了,可是在QuickTest中编程,我还不是很懂,我目前使用QuickTest,也就是录制脚本,在修修改改,编程的功能还没用过,具体操作,对我来说真的有点难,唉,不怕你们笑话,我使用QuickTest的水平有点菜

[ 本帖最后由 xueboy118 于 2006-5-30 15:19 编辑 ]

michaelyung 发表于 2006-5-30 15:20:25

原帖由 xueboy118 于 2006-5-30 15:18 发表
我也知道接着就是要编程了,可是在QuickTest中编程,我还不是很懂,我目前使用QuickTest,也就是录制脚本,在修修改改,编程的功能还没用过,具体操作,对我来说真的有点难,唉,不怕你们小花,我使用QuickTest的水 ...
其实上面xiaonan的那个 就可以做了。
不是有select数据库得到的结果吗,select * from * where name = username
这个就得到结果了啊。

xiaonan 发表于 2006-5-30 15:25:46

原帖由 xueboy118 于 2006-5-30 14:30 发表
呵呵,xiaonan ,不好意思 ,我已经N常时间没用VB了,都忘光了,你开始给的连接数据库的数据源那句就在我机器上报错,还时找人改的,改好人家就走了,我只能自己瞎折腾了。
我刚用了你说的方法,还是报同样的错。
你要把username取了之后加两个单引号啊,如下:
aaa="'000001'",你可以这样username="'"&usename&"'"
sql语句里字符型是要加单引号的

xueboy118 发表于 2006-5-30 15:48:47

xiaonan,你说的加单引好的方法我也试过了,可就是下不去,QuickTest报错,提示如下:
第 1 行: '*' 附近有语法错误。还是在Set res = Cmd.Execute()这里卡助了


michaelyung ,你的方法我用了,脚本如下:
Dim objParent, strName, strPassword   
strName = "admin"
strPassword="admin"   
Set objParent = Browser("title:=网站后台管理系统").Page("title:=网站后台管理系统")
objParent.WebEdit("text:=username").Set strName
objParent.WebEdit("text:=password").Set strPassword
objParent.WebButton("text:=登 录").Click

Dim res,cmd,sql
Set Res=createobject("adodb.recordset")
Set Cmd=createobject("adodb.command")
Cmd.activeconnection="Provider = Sqloledb; User ID = sa; Password = sa; Initial Catalog =bb; Data Source = 192.168.5.196 "      
Cmd.CommandType = 1
sql="select*from admin_userwhere name="&strName
Cmd.CommandText = sql
Set res = Cmd.Execute()

Set res = nothing
Set cmd.ActiveConnection = nothing
Set Cmd= nothing

objParent.sync()

QuickTest报错,提示如下:
Cannot identify the object "WebEdit" (of class WebEdit). Verify that this object's properties match an object currently displayed in your application.
箭头指向objParent.WebEdit("text:=username").Set strName这句

michaelyung 发表于 2006-5-30 15:53:58

原帖由 xueboy118 于 2006-5-30 15:48 发表
xiaonan,你说的加单引好的方法我也试过了,可就是下不去,QuickTest报错,提示如下:
第 1 行: '*' 附近有语法错误。还是在Set res = Cmd.Execute()这里卡助了


michaelyung ,你的方法我用了,脚本如下:
...
晕,这里text:=username中的username我是举个例子,你要看你网页上那个webedit的text属性值是多少啊,或者是"姓名",“用户名”,password也同样啊。
所以我觉得你应该先把这些问题都弄清楚后再来看代码,否则很容易糊涂的。

xiaonan 发表于 2006-5-30 16:01:36

麻烦你自己在sql语句下面 ,加句msgbox sql看,报出什么信息好哇?自己也主动一点,怎么一直跟着我们走呢?别担心,慢慢来,多试几次,会好的.现在可能你对编程上的东西有点不太熟

xueboy118 发表于 2006-5-30 16:07:07

michaelyung ,你说的webedit的text属性值是不是WEB页面输入框前显示出来的字符,那个字符我试了,也不行

michaelyung 发表于 2006-5-30 16:14:17

原帖由 xueboy118 于 2006-5-30 16:07 发表
michaelyung ,你说的webedit的text属性值是不是WEB页面输入框前显示出来的字符,那个字符我试了,也不行
你用object spy看下它的值。
还有我弄错了,webedit好像没有text属性
你改成webedit("name:= username")看看。
页: 1 [2] 3 4
查看完整版本: 如何使用Database checkpoint检查添加的数据是否正确???