如何使脚本专注于应用程序?

时间:2017-11-16 13:37:39

标签: autoit

我正在创建一些自动测试脚本来测试一个软件。我以模块化方式执行此操作,以便我可以更轻松地指示正在编写哪些脚本并对其进行更改,同时预编译所有脚本

我有一个使用批处理参数启动的脚本,这将打开我编译的脚本,该脚本输入登录详细信息并按OK以显示可能出现的任何对话框。这部分按预期工作。

在脚本结束时,我试图重新关注主应用程序窗口,将窗口设置为全屏,然后运行下一个批处理文件以执行下一个测试等。

在这个例子中" $ practice"是指我使用AutoItv3信息工具导出的主应用程序窗口标题。

WinWaitActive($practice)
$hWnd = WinGetHandle($practice)

; FullScreen
WinSetState($practice,"",@SW_RESTORE)
WinSetState($practice,"",@SW_MAXIMIZE)

RunWait(@ComSpec & " /c " & "TestStart.bat")

然而,这并没有像预期的那样重新获得焦点并最大化窗口,我认为应用程序启动画面可能会产生干扰。

如果我手动点击进入应用程序的任何部分以关注它,那么对话框将设置为全屏,然后我的第二个脚本将运行。

我应该怎么做才能使脚本的最后一部分符合我的意愿?

2 个答案:

答案 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

之前手动给出控件焦点