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")看看。