51Testing软件测试论坛

标题: QTP执行过程对抛出窗口录入的密码的加密和录入的数据的获得 [打印本页]

作者: jaunty    时间: 2008-6-16 14:34
标题: QTP执行过程对抛出窗口录入的密码的加密和录入的数据的获得
有这样一种需求,就是在QTP回放的过程中需要抛出一个录入框,操作者录入的密码显示是加密的(*****的样子),但是要能在后面的脚本获取操作者输入的数据。
可能很多人要问,自动化的过程为什么要人去输入操作。
这里先把这个问题的前提阐述一下:
我们的脚本是全球共享的,每个tester都有自己的用户名密码 去访问那个脚本 所以在access脚本的前面就需要QTP 弹出一个交互的对话框让tester去登陆才能access到 脚本的专署的信息,却又不能看到其他人的信息。
经过核查QTP 目前没有发现可以加密的函数,vbs也没有内置的function来提供这种功能。
所以结决方案的思路就是调用IE来create masked对话框
代码如下: 只需要copy到QTP的专家视图,直接run就可以了(也可单独保存为VBS文件运行)
strPw = GetPassword( "Please enter your password:" )
msgbox strPw



Function GetPassword( myPrompt )


Dim objIE
' Create an IE object
Set ōbjIE = CreateObject( "InternetExplorer.Application" )
' specify some of the IE window's settings
objIE.Navigate "about:blank"
objIE.Document.Title = "Password"
objIE.ToolBar = False
objIE.Resizable = False
objIE.StatusBar = False
objIE.Width = 320
objIE.Height = 180


Do While objIE.Busy

Loop
' Insert the HTML code to prompt for a password
objIE.Document.Body.InnerHTML = "<DIV align=""center""><P>" & myPrompt _
& "</P>" & vbCrLf _
& "<P><INPUT TYPE=""password"" SIZE=""20"" " _
& "ID=""Password""></P>" & vbCrLf _
& "<P><INPUT TYPE=""hidden"" ID=""OK"" " _
& "NAME=""OK"" VALUE=""0"">" _
& "<INPUT TYPE=""submit"" VALUE="" OK "" " _
& "VBscrīpt:OK.Value=1""></P></DIV>"
' Make the window visible
objIE.Visible = True
' Wait till the OK button has been clicked
Do While objIE.Document.All.OK.Value = 0


Loop
' Read the password from the dialog window
GetPassword = objIE.Document.All.Password.Value
' Close and release the object
objIE.Quit
Set ōbjIE = Nothing
End Function



参考信息:
http://www.microsoft.com/technet/scrīptcenter/resources/qanda/feb05/hey0204.mspx
---------------------------------------------
另外
(1)如果在正常的情况下需要加密密码,QTP提供password encoder 可以generate 出加密后的string。
(2) 显示密码信息
抓取密码
      getROProperty(<Object Property the Stores the Password>) ...ie try getROProperty("Password")
显示信息
       MsgBox
(3)对某些列进行掩盖:
Browser("Browser").Page("Webpage").WebEdit("txtPassword").SetSecure ("User password")







作者: maguschen    时间: 2008-6-16 16:34
是一个解决方法
但是其实这样并不能弄自动化哦
因为不可能每次都有人坐在电脑前面输密码的
所以这个需求有问题~~
作者: 没有蛀牙    时间: 2008-6-16 17:28
QTP怎么没有提供加密的方法阿?
Crypt.Encrypt(Data)不是可以加密吗?
作者: jaunty    时间: 2008-6-16 23:59
原帖由 maguschen 于 2008-6-16 16:34 发表
是一个解决方法
但是其实这样并不能弄自动化哦
因为不可能每次都有人坐在电脑前面输密码的
所以这个需求有问题~~


好好看我前面写的对于这个东西需求的描述你就明白了




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