51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4791|回复: 18
打印 上一主题 下一主题

[求助] QTP处理密码控件,无法输入,求助!!!!!!!

[复制链接]
  • TA的每日心情
    奋斗
    2018-8-27 15:56
  • 签到天数: 322 天

    连续签到: 1 天

    [LV.8]测试军长

    跳转到指定楼层
    1#
    发表于 2013-2-27 17:20:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    Set wshobj = CreateObject("WScript.Shell")   
    wshobj.SendKeys   已经试过了,没有用

    其他的调用TYPE也没有起到作用

    求高手,是怎么处理的
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2013-2-27 17:53:54 | 只看该作者
    重新录制一下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-8-27 15:56
  • 签到天数: 322 天

    连续签到: 1 天

    [LV.8]测试军长

    3#
     楼主| 发表于 2013-2-27 17:58:43 | 只看该作者
    回复 2# liumangniu

    木有用啊,录制根本就没有输入的密码,全部被密码控件挡住了,无法录制。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2013-2-27 18:01:22 | 只看该作者
    你要先获取焦点吧,
    控件获取焦点后,键盘输入才有效

    不知道,你的情况是不是这样
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-8-27 15:56
  • 签到天数: 322 天

    连续签到: 1 天

    [LV.8]测试军长

    5#
     楼主| 发表于 2013-2-27 18:07:32 | 只看该作者
    回复 4# lgh75560

    我前一步是输入用户名,用sendkeys "{tab}",来获取密码控件的焦点,看到光标已经停在了密码输入处,但是用sendkeys "11111",密码输入不进去。。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2013-2-27 18:13:35 | 只看该作者
    你录制的是银行密码控件?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-8-27 15:56
  • 签到天数: 322 天

    连续签到: 1 天

    [LV.8]测试军长

    7#
     楼主| 发表于 2013-2-28 08:58:41 | 只看该作者
    回复 6# liumangniu

    是啊。。属于银行金融类的密码控件,各位有什么好的解决办法没有?求助大神啊。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2017-4-28 14:26
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]测试排长

    8#
    发表于 2013-2-28 11:08:52 | 只看该作者
    不能用控件自身接口输入密码吗?
    比如...webedit("密码").object.XXXX
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-8-27 15:56
  • 签到天数: 322 天

    连续签到: 1 天

    [LV.8]测试军长

    9#
     楼主| 发表于 2013-2-28 11:29:43 | 只看该作者
    回复 8# yubing4828

    请问楼上如何使用控件自身接口?这个控件无法正确识别啊,只能识别为WinObject("ATL:EDIT"),用这个我直接用TYPE “123456”,还是无法输入。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-8-27 15:56
  • 签到天数: 322 天

    连续签到: 1 天

    [LV.8]测试军长

    10#
     楼主| 发表于 2013-2-28 12:16:45 | 只看该作者
    已经两天了,还没解决。。版主大大速来帮忙解决啊。。。电子商务类登陆的密码框无法输入啊。。WinObject("ATL:Edit").Type  跟  WScript.Shell方法都已经试过了,没用。。有没有大神有更好的方法?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2017-4-28 14:26
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]测试排长

    11#
    发表于 2013-2-28 12:28:05 | 只看该作者
    回复 9# seagull1985


        LZ的意思是因为控件挡住了那个输密码的文本框还是控件不能识别而不能输入密码?
    如果是因为控件挡住了输密码的文本框,那能不能先让这个控件禁用呢;
    如果是因为控件不能识别,那试试能不能用spy探测这个控件,看控件属性,然后选其中的关键属性,描述下,比如...webedit("html tag:=input","name:=wd").set "XXX"
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-8-27 15:56
  • 签到天数: 322 天

    连续签到: 1 天

    [LV.8]测试军长

    12#
     楼主| 发表于 2013-2-28 14:48:25 | 只看该作者
    回复 11# yubing4828

    是控件不能识别,直接识别为WinObject,你说的那种方式好像不可行啊。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2017-4-28 14:26
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]测试排长

    13#
    发表于 2013-2-28 16:09:07 | 只看该作者
    回复 12# seagull1985

    哦...  
    还有一个办法...
    同求大神出现~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-8-27 15:56
  • 签到天数: 322 天

    连续签到: 1 天

    [LV.8]测试军长

    14#
     楼主| 发表于 2013-2-28 16:42:40 | 只看该作者
    回复 13# yubing4828
    班竹们。。。出来解决问题啦。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2013-2-28 17:45:09 | 只看该作者
    我也试了下,工商银行的,确实弄不了,
    不过给个代码,不知道你那运行的怎么样子,反正都是死马了,当活马医医

    1. Browser("登录- 派代网 - 电子商务入口").Page("中国工商银行新一代网上银行").Frame("indexFrame").WebEdit("logonCardNum").Set "wqe"
    2. Dim hwndPsw:hwndPsw=Browser("登录- 派代网 - 电子商务入口").Page("中国工商银行新一代网上银行").Frame("indexFrame").WinObject("ATL:Edit_2").GetROProperty("hwnd")   'ATL控件
    3. Dim valiCode:valiCode=Browser("登录- 派代网 - 电子商务入口").Page("中国工商银行新一代网上银行").Frame("indexFrame").WinObject("ATL:Edit").GetROProperty("hwnd")           'ATL控件

    4. '12是常量0x000C 赋值常量
    5. '在UFT 11.5中运行的,不知道其他版本行不行
    6. Extern.Declare micVoid ,"SendMessageA","user32.dll","SendMessageA",micLong,micInteger,micInteger,micString
    7. Extern.SendMessageA hwndPsw,12,0,"123123"
    8. Extern.SendMessageA valiCode,12,0,"000000"
    复制代码
    不过这效果是,虽然值上去了,但其实也是错误的,
    这就难搞了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-9-27 10:05
  • 签到天数: 36 天

    连续签到: 1 天

    [LV.5]测试团长

    16#
    发表于 2013-3-4 09:32:40 | 只看该作者
    回复 14# seagull1985


        厄~我怎么才看到帖子要不你发个有这个密码控件的地址出来,我玩玩
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2013-3-4 10:46:47 | 只看该作者
    我相信很多网银的密码控件,不通过Extern.Declare申请调用其他程序是无法获得键盘输入的。这是由这些密码控件的工作原理决定的。

    这些密码控件,直接读取键盘操作时发出的底层二进制代码,然后模拟出操作系统中的键盘输入函数,再模拟出页面的密码框及密码信息,所以它不接受KeyPress等以及Sendkeys等操作,而只接受键盘发出的底层二进制代码,也无法通过hook来勾取句柄,所以QTP一定是无法直接录制到,也无法通过fireevent或者sendkeys来赋值。

    我相信,如果哪个网银的密码控件可以通过常见的手段自动给密码框赋值,这个网银一定是不安全的。

    可能采取的手段,我想只能通过调用线程注入,给密码控件dll注入一段支持普通输入的方法。

    但这也很麻烦,很多密码控件自身就有反线程注入的功能,肯定还要想其他办法来绕过反线程注入。要是容易的话,各大银行就都成了你的提款机了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2013-3-5 11:10:23 | 只看该作者
    回复 17# 泰然


        分析的很到位,如果是你们自己的产品的话,建议开发个测试环境的密码控件来支持自动化输入,我们目前就是这样做的。
    如果可以自动化输入密码,那就是安全隐患,必须是要修复的。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-3-3 10:21
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]测试排长

    19#
    发表于 2013-3-13 14:17:14 | 只看该作者
    17# 分析的很到位

    如果银行空间被简简单单的sendkey了,后果岂不是很严重
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-14 20:19 , Processed in 0.083928 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表