shingo0109 发表于 2011-2-25 15:07:03

为啥密码框WinEditor用type无法输入

各位大虾, 我这边遇到一个登录页面,密码框是WinEditor,然后我使用单步添加对象, 添加代码如下:
Browser("xxxx").Page("xxxx").WinEditor("Edit").Type "111111"

但运行时还是没法把值输入进去, 不知是啥原因。

控件属性如图:

shingo0109 发表于 2011-2-25 15:09:15

后面我用录制功能试了下, 只录下了这句话:
Browser("xxxx").Page("xxxx").WinEditor("Edit").SetCaretPos 0,0
但具体的值并没有录下来, 请高手提点意见, 谢谢~~

duxianduruo 发表于 2011-2-25 17:53:25

我在想我的为什么不能录制喃?record按钮正常的 但是run是置灰的

TIB 发表于 2011-2-25 22:23:08

这个Edit框可能是个特殊控件

lhd85 发表于 2011-2-26 13:38:35

尝试用Sendkey, 我在其它自动化软件里, 有用到Keys这个属性, 也就是模仿键盘输入.
有特殊控件, 可能本来就具备防止外部软件强制输入的功能. 用键盘输入也许可以绕过这个问题, 你查看下对象的自有属性和方法。 也许对象就具有keys这样的键盘输入属性

shingo0109 发表于 2011-2-28 09:22:55

回复 5# lhd85


我用SendKeys语句试过了, 貌似输入不进去~~
没看到有keys这样的自身属性

dqf 发表于 2011-2-28 12:45:22

Browser("xxxx").Page("xxxx").WinEditor("Edit").Set"111111"
这样可以吗?

shingo0109 发表于 2011-2-28 13:01:01

回复 7# dqf


Set也试过了, 但run时会报错, 如下图:

shingo0109 发表于 2011-2-28 13:08:51

如果手工输入的话是可以通过键盘输入的, 或者通过点击右边的软键盘按钮来通过软键盘来输入, 本来想通过点击软键盘, 但软键盘里都是WinButton,而且每一个button的位置都是随机的, 并且属性除了坐标基本上大多都一样的,并且类似text属性为空的, 这样要识别点击的是哪个数字或字母按钮就很困难了。

目前还想不到啥方法来识别。。

ls_721521 发表于 2011-2-28 13:41:57

Browser("xxxx").Page("xxxx").WinEditor("Edit").Type "111111"
替换成:
Set skey=createobject("wscript.shell")
skey.SendKeys "111111"
Set skey= nothing

shingo0109 发表于 2011-2-28 13:55:46

回复 10# ls_721521


SendKeys方法已经试过, 没法输入进去,还是为空

ls_721521 发表于 2011-2-28 13:59:41

键盘输入前先wait 1
或者先让那个控件获取焦点再键盘输入呢
.focus

ls_721521 发表于 2011-2-28 14:01:06

你先手工操作一下:只用键盘,使用tab或上下翻页键看能否成功。如果能的话就没问题

17800455 发表于 2011-2-28 14:05:04

1>看一下这控件都有哪些方法。有没有objectsettype ,有的话先设置一下焦点,然后在用。 

2>设置焦点后 用Sendkeys试试。

shingo0109 发表于 2011-2-28 14:08:19

回复 13# ls_721521


用tab键可以从用户名框切换到该密码框, 但手工输入密码后再点Tab键, 就无法切换出去了, 光标会一直停留在该框内

shingo0109 发表于 2011-2-28 14:18:11

回复 14# 17800455


用spy看了下该控件所支持的方法, 如下图, 里面是有Type方法的, 但实际运行时就是没法输入值进去,不知为啥。
是不是因为是密码框的原因, 开发人员对该控件做了特殊处理了

lanchozxd 发表于 2011-2-28 17:07:32

我也遇到过同样的问题,手动从键盘可以输入值,用sendkey就不行
同样求解。。。密码框是activex控件的。。

shingo0109 发表于 2011-2-28 17:31:10

我选择ActiveX插件进QTP, 然后进行录制, 录制下来的代码如下:
Browser("xxxx").Page("xxxx").ActiveX("PowerPasswordXBOSH Control").WinEditor("Edit").SetCaretPos 0,0

具体的密码值还是没有录下来, 然后添加上以下语句, 运行时还是没法输入进去值.
Browser("xxxx").Page("xxxx").ActiveX("PowerPasswordXBOSH Control").WinEditor("Edit").Type "123456"

tonyliu12 发表于 2011-3-3 01:40:47

用set 应该没错, webedit都是用set 来赋值

shingo0109 发表于 2011-3-7 10:32:10

回复 19# tonyliu12


用Set是不行的,会报错, 该控件的class name是WinEditor, 不是WebEdit
页: [1] 2
查看完整版本: 为啥密码框WinEditor用type无法输入