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 ' 密码
如果知道的麻烦告诉一下 应该是可以的,下面是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 编辑 ] 首先谢谢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 编辑 ] 有关密码设置的问题解决有3种:
1。只需将原SetSecure 改成Set就可以了
2。可将密码部分作为参数化来处理,在DataTable中选中需要加密的数据,右键,选择Data,Encrypt
3。就是用Crypt来处理,也就是楼上所提供的了 原帖由 samueloyang 于 2010-9-13 15:54 发表 http://bbs.51testing.com/images/common/back.gif
首先谢谢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 编辑 ] 呵呵呵谢谢各位的解释,这个问题已经解决了,的确如TIB所说的方法的却是可以的,但是在之前,就是不能实现。
现在又有个新的问题:我们在使用这个的时候不能总是手工输入吧,我现在就想将它与datatable联系起来,这样就可以完整的实现自动化,但是我除了使用检查点来与datatable来连接,其它方法暂时还不知道,我想请教一下怎么样才能将
pwd = inputbox("please enter the char:")
password=crypt.encrypt(pwd)
Print password
与datatable或者是数据库联系起来测呢???
期待中。。。。。。。。。。。。。
另外说明一下:如三楼所说的,使用set方法的却是没法,在脚本执行到这一步的时候,密码行更本就不执行。不知道是我设置有问题还是其它原因,至少是在我机子上测试是无效的哈。
[ 本帖最后由 samueloyang 于 2010-9-13 17:14 编辑 ] 不明白楼主为什么非一定要用这种方法实现,明文不行吗?
难道楼主怕别人看见了密码?
这样的实现对于自动化测试有什么实际意义吗?
:L
回复 7# 的帖子
并不是我不想用明文形式我也想啊但是在回放的时候,明文形式的加载不到密码栏里面去啊。
页:
[1]