51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2630|回复: 10
打印 上一主题 下一主题

[原创] 怎样才能将数据库中所有的 用户名/密码 成功执行登陆操作

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-5-19 14:08:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
‘数据库连接
Set con=createobject("adodb.connection")
con.open"DRIVER={Microsoft ODBC for Oracle};UID=**;PWD=**;SERVER=..;"
Set rs=createobject("adodb.recordset")
sql="select * from t"
rs.open sql,con
'获取数据库中数据并赋值到QTP中global表
i=1
while  not rs.eof
                     logname =  rs("logname").value
        logpasswd=rs("logpasswd").value   
                                  
                     datatable.setcurrentrow(i)
                     datatable.value("name","Global")=logname
                     datatable.value("passwd","Global")=logpasswd
         i=i+1
                      rs.movenext                  
wend

Browser("..").Page("..").WebEdit("loginName").Set DataTable("name", dtGlobalSheet)
Browser("..").Page("..").WebEdit("password").SetSecure DataTable("passwd", dtGlobalSheet)
Browser("..").Page("..").WebButton("提交").Click
Browser("..").Page("..").Link("登出").Click
要实现的是:通过global表中的数据(不同的用户名密码)登陆系统
现在情况是:执行时只能登陆一次,并且是数据库中最后一对用户名和密码能登陆
请问怎样才能将数据库中所有的数据能成功执行登陆操作
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-5-19 14:21:54 | 只看该作者
把登陆的脚本也放在循环内,不然总是最后一组用户名和密码在登陆.
还有从数据库中把数据给取出来了,干嘛不直接用变量附给要输入数据的脚本呢?放到global表里,再去取,不是有点多余吗?
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2006-5-19 14:38:55 | 只看该作者
我明白的你意思
但是我的考虑是,我觉得这样写,比较容易看明白,脚本容易读
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2006-5-19 15:37:18 | 只看该作者
把登陆的放在循环里面就看不明白了吗?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2006-5-19 16:27:39 | 只看该作者
谢谢xiaonan提供了更简单的解决方法

如果还能用其他的方式解决的话,也算多学了点知识了
对于刚刚开始使用QTP的新手来说,多学点还是必要的

恳请各位大侠们提点提点,谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2006-5-19 16:57:11 | 只看该作者
还有个办法是下面也用个循环,不过先在循环之前把row的指针指到第一条记录上,代码这样.
  datatable.setcurrentrow(1)
For i=1 to datatable.GetRowCount
Browser("..").Page("..").WebEdit("loginName").Set DataTable("name", dtGlobalSheet)
Browser("..").Page("..").WebEdit("password").SetSecure DataTable("passwd", dtGlobalSheet)
Browser("..").Page("..").WebButton("提交").Click
Browser("..").Page("..").Link("登出").Click
datatable.GlobalSheet.SetNextRow
Next
可以试试
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2006-5-23 09:49:03 | 只看该作者
非常好,谢谢
我试了一下,你的方法可行
而且已经明白了我录制登陆时为什么第一个录入进去的是表的最后一个参数


但是还有一点没有想明白的
我都已经参数化用户名,密码了
为什么还需要用循环语句才能继续录制后面的数据
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2006-5-23 10:54:03 | 只看该作者
这和你的run的设置是有关的
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2006-6-2 15:57:59 | 只看该作者
我的run设置没错吧,设置的是run on all rows 呀
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2006-6-2 17:25:22 | 只看该作者
脚本只执行一遍所有的row,已经执行到最后一条了,加datatable.setcurrentrow(1)是强制让它到第一条记录的
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2006-6-6 10:22:45 | 只看该作者
你其实可以直接将用户名字,密码从数据库导出到QTP的Global data table,然后让QTP自动从表里面读,所有的用户名都能正常登陆,但是循环的时候是从第一个用户名登陆成功然后再注销,再登陆再注销,这样开始循环!

其实我到是觉得登陆没有必要采用自动来做,不如手工做,做哈研究还可以的......................
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /2 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-6-19 21:13 , Processed in 0.086035 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表