3.5.2 激活窗口AppActivat
窗口的激活经常会在自动化测试过程中被使用到,特别是在需要同步等待测试对象时,有时页面需要一定的切换时间,往往很多新手会认为,加适当的等待时间即可解决此问题,其实这样的想法绝对是错误的,因为测试机本身可能会出现不稳定的情况,举个例子,当一台测试机运行时间比较长了,或者此测试机正在做可靠性测试需要执行上千次脚本,那么此时用wait是比较危险的,其关键原因是因为,任何时候切换页面的间隔时间都是不等的,如果wait时间设置短了,可能由于计算机运行的次数太多,内存积攒多导致切换时间超过了wait时间,而如果wait时间太长,会浪费太多的时间。不管哪种方式都不是一个非常可取的办法,如果加入循环等待页面切换直到切换成功,这样便可更好地提高代码的执行效率。因此,循环判断页面切换是否成功就成了关键,WshShell对象就提供了这样一个非常有用的功能。
● 语法:
object.AppActivate title |
● 参数:
Title为需要激活窗口的title属性值,也就是标题或者是Process ID。
● 返回值:
布尔类型,如果当前窗口被激活,返回True,反之返回False。
实例:
完成一个打开记事本,循环判断其是否被激活,一旦窗口被激活成功之后即输入 字符串“zzxxbb112”。
'创建WSH对象 Set oWshShell = CreateObject("wscript.shell") '启动notepad记事本应用 oWshShell.Run "notepad" '循环等待记事本页面是否被激活,没有激活就一直循环直到激活为止 While Not oWshShell.AppActivate("无标题 - 记事本") : Wend '发送字符串zzxxbb112 oWshShell.SendKeys "zzxxbb112" '释放对象 Set oWshShell = Nothing |
分析:
执行以上脚本后可以看到,脚本自动启动了记事本后,在记事本中输入了zzxxbb112字符串,看似非常简单,其实对于新手来说还是比较容易出错,如果此处没有“While Not oWshShell.AppActivate("无标题?-?记事本") : Wend”这一步骤,zzxxbb112可能就无法输入到被打开的记事本中去,接下来我们就仔细探究竟。
比较两个脚本的运行结果。
(1)脚本1:
'创建WSH对象 Set oWshShell = CreateObject("wscript.shell") '启动notepad记事本应用 oWshShell.Run "notepad" '激活记事本窗口 oWshShell.AppActivate("无标题 - 记事本") '提示消息框 Msgbox “suc” '释放对象 Set oWshShell = Nothing |