|
有这样一种需求,就是在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")
|
|