我正在创建一些自动测试脚本来测试一个软件。我以模块化方式执行此操作,以便我可以更轻松地指示正在编写哪些脚本并对其进行更改,同时预编译所有脚本
我有一个使用批处理参数启动的脚本,这将打开我编译的脚本,该脚本输入登录详细信息并按OK以显示可能出现的任何对话框。这部分按预期工作。
在脚本结束时,我试图重新关注主应用程序窗口,将窗口设置为全屏,然后运行下一个批处理文件以执行下一个测试等。
在这个例子中" $ practice"是指我使用AutoItv3信息工具导出的主应用程序窗口标题。
WinWaitActive($practice)
$hWnd = WinGetHandle($practice)
; FullScreen
WinSetState($practice,"",@SW_RESTORE)
WinSetState($practice,"",@SW_MAXIMIZE)
RunWait(@ComSpec & " /c " & "TestStart.bat")
然而,这并没有像预期的那样重新获得焦点并最大化窗口,我认为应用程序启动画面可能会产生干扰。
如果我手动点击进入应用程序的任何部分以关注它,那么对话框将设置为全屏,然后我的第二个脚本将运行。
我应该怎么做才能使脚本的最后一部分符合我的意愿?
答案 0 :(得分:1)
WinActivate (“title”[,“text”]) - 激活(给焦点)一个窗口。
title - 要激活的窗口的标题/ hWnd /类。请参阅Title special definition。
text [可选]要激活的窗口的文本。默认是一个 空字符串。 See Text special definition
更多信息here。
答案 1 :(得分:0)
这就是我最终解决问题的方法
WinActivate($practice)
WinWaitActive($practice)
$hWnd = WinGetHandle($practice)
ControlFocus($hWnd, "", "[CLASS:XTPToolBar; INSTANCE:1]")
; FullScreen
WinSetState($practice,"",@SW_RESTORE)
WinSetState($practice,"",@SW_MAXIMIZE)
RunWait(@ComSpec & " /c " & "sequence.bat")
通过添加WinActivate,然后在调用WinSetState
之前手动给出控件焦点