一、什么是焦点:
焦点说白了就是你打开某一个程序时默认的focuse
比如我们那QTP自带的windows下的示例程序来说,启动它后焦点自动落在了agent name文本框上文章源自玩技e族-https://www.playezu.com/11112.html
二、利用Tab键检查焦点:
可以利用键盘上的Tab键来设置焦点的位置;文章源自玩技e族-https://www.playezu.com/11112.html
以示例程序来说,焦点开始在agent name上,按一下Tab,则跳到了pawword上在按一下Tab则到了OK上文章源自玩技e族-https://www.playezu.com/11112.html
三、下面我们写代码来验证一下:
'Dialog("Login").WinEdit("Agent Name:").Set "Mercury" 'Dialog("Login").WinEdit("Password:").SetSecure "5456e5ada0731880d740ab67603518591e1d3520" 'Dialog("Login").WinButton("OK").Click 'Window("Flight Reservation").Close
'检查控件的focused属性的函数
Public Function CheckFocus(TestObject) If TestObject.CheckProperty("focused","false",2) Then CheckFocus=True else CheckFocus=false End If End Function
文章源自玩技e族-https://www.playezu.com/11112.html
'tab按键的键值 Const VK_TAB=15 '创建DeviceRepaly对象 Set DeviceReplay=CreateObject("Mercury.DeviceReplay") '创建Dictionary对象 Set dic=CreateObject("Scripting.Dictionary") '添加Dictionary的key和valuse,把顺序作为key,控件对象作为value dic.add"1",Dialog("Login").WinEdit("Agent Name:") dic.add"2",Dialog("Login").WinEdit("Password:") dic.add"3",dialog("Login").WinButton("OK") '定位到程序窗口,并判断窗口中的默认焦点是否在正确的位置 Dialog("Login").Activate CheckFocus(dic.item("1")) For i = 2 To dic.count DeviceReplay.PressKey VK_TAB If CheckFocus(dic.item((CStr(i)))) Then Exit for 'Else 'msgbox"焦点正确" End If Next
文章源自玩技e族-https://www.playezu.com/11112.html
调试报错:文章源自玩技e族-https://www.playezu.com/11112.html
(1)对象不存在文章源自玩技e族-https://www.playezu.com/11112.html
文章源自玩技e族-https://www.playezu.com/11112.html
(2)解决方法:文章源自玩技e族-https://www.playezu.com/11112.html
增加对象:Resources - Object Respository Manager - Object - Add object文章源自玩技e族-https://www.playezu.com/11112.html
对象导入到Toolbox中