51Testing软件测试论坛

标题: QTP中的密码设置 [打印本页]

作者: samueloyang    时间: 2010-9-13 14:36
标题: QTP中的密码设置
相信很多人都在为自己录制的密码选项如何修改,并自动加载到密码栏中苦恼,我也在为这个伤神,今天摸索出了一点东西,先及时的传上来,免得以后忘了。
   我使用的是函数crypt.Encrypt,它好像具有将明文密码转换成加密密码,它在QTP帮助文档中的例子是这样的:
  pwd = "GetPasswordfromSomewhere"
  e_pwd = Crypt.Encrypt(pwd)
  Browser("dfgd").Dialog("pass").WinEdit("pwd").SetSecure e_pwd
    在实际的的脚本中我却没法实现这样的模式
   经过多次的修改最后总算是成功了,不过他要求的密码却是固定值源脚本是这样的:
  Browser("XXXXXX 版本号:V4.1.0.2").Page("XXXXXX:V4.1.0.2").WebEdit("password").SetSecure "4sd12gfdsg2fdhytryw3fs215adf"
   我修改了一下:
   dim pwd
   pwd=crypt.Encrypt ("000000") '输入固定的密码值
   msgbox (pwd) '用于检查转换后的密码值是否有效
  Browser("XXXXXX 版本号:V4.1.0.2").Page("XXXXXX:V4.1.0.2").WebEdit("password").SetSecure pwd
   我也曾这样修改,但是却不能输入到密码框中不知道是何原因:
   Dim passwrod,pwd
   Browser("XXXXXX 版本号:V4.1.0.2").Page("XXXXXX 版本号:V4.1.0.2").Sync
   Browser("XXXXXX 版本号:V4.1.0.2").Close
   passwrod=inputbox("please enter the password: ")
   pwd=crypt.Encrypt (password)
   msgbox (pwd)
   Browser("XXXXXX 版本号:V4.1.0.2").Page("XXXXXX:V4.1.0.2").WebEdit("password").SetSecure pwd ' 密码
   如果知道的麻烦告诉一下
作者: TIB    时间: 2010-9-13 15:15
应该是可以的,下面是Flight例子中的登录部分:

Dialog("Login").Activate
Dialog("Login").WinEdit("Agent Name:").Set "mercury"
pwd = Crypt.Encrypt("mercury")
Print pwd
'Dialog("Login").WinEdit("Password:").SetSecure "4c8dcdbc436c074cbff2706dc2e5018a76d5f597"
Dialog("Login").WinEdit("Password:").SetSecure pwd
Dialog("Login").WinButton("OK").Click

有可能是你的程序的加密算法不是标准的?

其实直接改用Set输入明文更方便些

[ 本帖最后由 TIB 于 2010-9-13 15:16 编辑 ]
作者: samueloyang    时间: 2010-9-13 15:54
首先谢谢TIB的回复,但是你发现没有,你写的代码也是使用的是静态值:pwd = Crypt.Encrypt("mercury")   Print pwd  我需要动态的输入一个变量经行修改他的PASSWPRD。
   也就是需要这样写:pwd = inputbox("please enter the char:")
                                          password=crypt.encrypt(pwd)
                                          Dialog("Login").WinEdit("Password:").SetSecure password
set方法也使用过,根本就通不过,所以我选择使用crypt这个函数

[ 本帖最后由 samueloyang 于 2010-9-13 15:56 编辑 ]
作者: dqf    时间: 2010-9-13 16:37
有关密码设置的问题解决有3种:
1。只需将原SetSecure 改成Set就可以了
2。可将密码部分作为参数化来处理,在DataTable中选中需要加密的数据,右键,选择Data,Encrypt
3。就是用Crypt来处理,也就是楼上所提供的了
作者: TIB    时间: 2010-9-13 16:53
原帖由 samueloyang 于 2010-9-13 15:54 发表
首先谢谢TIB的回复,但是你发现没有,你写的代码也是使用的是静态值:pwd = Crypt.Encrypt("mercury")   Print pwd  我需要动态的输入一个变量经行修改他的PASSWPRD。
   也就是需要这样写:pwd = inputbox("please ...

试过了,也是可以的:
Dialog("Login").Activate
Dialog("Login").WinEdit("Agent Name:").Set "mercury"
pwd = inputbox("please enter the char:")
password=crypt.encrypt(pwd)
Print password
'Dialog("Login").WinEdit("Password:").SetSecure "4c8de4fbe06ef0d9be9b69bd9ba510acf9808684"
Dialog("Login").WinEdit("Password:").SetSecure password
Dialog("Login").WinButton("OK").Click

所以我怀疑你那边程序的加密不是标准的

[ 本帖最后由 TIB 于 2010-9-13 16:54 编辑 ]
作者: samueloyang    时间: 2010-9-13 17:10
呵呵呵  谢谢各位的解释,这个问题已经解决了,的确如TIB所说的方法的却是可以的,但是在之前,就是不能实现。
    现在又有个新的问题:我们在使用这个的时候不能总是手工输入吧,我现在就想将它与datatable联系起来,这样就可以完整的实现自动化,但是我除了使用检查点来与datatable来连接,其它方法暂时还不知道,我想请教一下怎么样才能将
pwd = inputbox("please enter the char:")
password=crypt.encrypt(pwd)
Print password
与datatable或者是数据库联系起来测呢???
   期待中。。。。。。。。。。。。。
另外说明一下:如三楼所说的,使用set方法的却是没法,在脚本执行到这一步的时候,密码行更本就不执行。不知道是我设置有问题还是其它原因,至少是在我机子上测试是无效的哈。

[ 本帖最后由 samueloyang 于 2010-9-13 17:14 编辑 ]
作者: iamfeiyu1009    时间: 2010-9-13 23:21
不明白楼主为什么非一定要用这种方法实现,明文不行吗?
难道楼主怕别人看见了密码?
这样的实现对于自动化测试有什么实际意义吗?

作者: samueloyang    时间: 2010-9-14 09:21
标题: 回复 7# 的帖子
并不是我不想用明文形式  我也想啊  但是在回放的时候,明文形式的加载不到密码栏里面去啊。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2