WR读到的PassWord框里的星号显示密码是加密的
WR读到的PassWord框里的星号显示密码是加密的,我想用数据向导把Password里的数据递加1,该怎样做。 你的操作是如何做呢!验证点?
我觉得如果要是录制的脚本,只是把密码数据加1后,输入到密码框里就可以了 password显示为加密串有时是因为不能正确识别此控件,比如java,我就遇到过此情况,加了java add-in后显示的就是实际输入文本. 一般windows控件经过加密处理,在控件的消息中加入了对WM_GETTEXT进行处理,所以一般想得到密码框的文本都是加密的字符串!java可能处理方式不同
这里是个delphi对密码框处理WM_GETTEXT 消息的代码,你可以从中看到其中的奥秘!
下边是得到password密码框密码的源代码!你可以通过这段delphi代码得到你要的得到的password框的代码
// 显示鼠标当前所在的文本框内容
function ShowWindowText():string;
var
pPoint:TPoint;
WinText:string;
mText:PChar;
hWnd:Integer;
begin
GetCursorPos(pPoint);
SetLength(WinText,256);
hWnd:=WindowFromPoint(pPoint);
GetWindowText(hWND,PChar(WinText),256);
SetLength(WinText,StrLen(PChar(WinText)));
result:=WinText;
end;
而windows有的密码框控件对这个消息进行了处理,下边是一个控件的代码:
unit uCEdit;
interface
uses Windows,StdCtrls,Messages,Classes;
TYPE
TCEdit=class(TEdit)
private
bEnable:boolean; // 允许使用
procedure WndProc(var Msg: TMessage);override;
public
constructor Create(AOwner: TComponent); override;
function MyGetText():string;
published
end;
procedure Register;
implementation
{ CEdit }
//注册控件
procedure Register;
begin
RegisterComponents('Additional', );
end;
constructor TCEdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
// 禁止使用
bEnable:=false;
end;
function TCEdit.MyGetText: string;
begin
// 程序本身还是用允许的
bEnable:=true;
result:=Text;
end;
procedure TCEdit.WndProc(var Msg: TMessage);
begin
if (Msg.Msg=WM_GETTEXT) or (Msg.Msg=EM_GETLINE)then
begin
if bEnable then
begin
bEnable:=false;
inherited;
end;
end
else inherited;
end;
end.
所以你遇到这样的控件你是很难得到他的password的!其实winrunner获得属性,得到密码的情况类似!
对于java的情况我没有做实验,所以无法得出具体的情况!不过从自动化实现上来说我觉得得到一个密码框的密码,我觉得这需要考虑! 谢谢大家的帮助! 谢谢大家的帮助! 其实这个问题很简单.
用password_encrypt()就可以了 如:password_edit_set("QQ密码:", password_encrypt(ddt_val(table,"QQ密码")));
详见我的帖:QQ登陆脚本的录制
丢得多
password_edit_set改称edit_set就什么问题都没了!麻烦得要命! 我也是像楼上这样做的,很简单,除非不想让别人知道这个软件的密码是什么,才需要那么麻烦吧呵呵
password_edit_set改成edit_set还是我照edit_username改的,试一下还真的可以,不过好象有人研究出来了,呵呵~~~~~~~~~
页:
[1]