如何使脚本专注于应用程序?
How can I make a script focus on an application?
我正在创建一些自动化测试脚本来测试一个软件。我以模块化方式执行此操作,以便我可以更轻松地指定正在使用哪些脚本并更改它,同时拥有所有脚本 pre-compiled
我有一个使用批处理参数启动的脚本,这会打开我编译的脚本,该脚本输入登录详细信息,然后对可能出现的任何对话框按“确定”。这部分按预期工作。
在脚本的末尾,我试图 re-gain 专注于主应用程序 window,将 window 设置为全屏,然后 运行 下一批执行下一个测试等的文件
在此示例中,“$practice”指的是主应用程序的 window 标题,这是我使用 AutoItv3 信息工具导出的。
WinWaitActive($practice)
$hWnd = WinGetHandle($practice)
; FullScreen
WinSetState($practice,"",@SW_RESTORE)
WinSetState($practice,"",@SW_MAXIMIZE)
RunWait(@ComSpec & " /c " & "TestStart.bat")
但是,这并没有像预期的那样重新获得焦点并最大化 window,我认为应用程序启动画面可能会产生干扰。
如果我手动单击进入应用程序的任何部分以聚焦它,那么对话框将设置为全屏,然后我的第二个脚本将 运行。
我应该怎么做才能使脚本的最后一部分按照我的意愿运行?
WinActivate ( "title" [, "text"] ) - Activates (gives focus to) a window.
title - The title/hWnd/class of the window to activate. See Title
special definition.
text [optional] The text of the window to activate. Default is an
empty string. See Text special definition.
更多信息here。
这就是我最终解决问题的方式
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 之前手动给予控制焦点
我正在创建一些自动化测试脚本来测试一个软件。我以模块化方式执行此操作,以便我可以更轻松地指定正在使用哪些脚本并更改它,同时拥有所有脚本 pre-compiled
我有一个使用批处理参数启动的脚本,这会打开我编译的脚本,该脚本输入登录详细信息,然后对可能出现的任何对话框按“确定”。这部分按预期工作。
在脚本的末尾,我试图 re-gain 专注于主应用程序 window,将 window 设置为全屏,然后 运行 下一批执行下一个测试等的文件
在此示例中,“$practice”指的是主应用程序的 window 标题,这是我使用 AutoItv3 信息工具导出的。
WinWaitActive($practice)
$hWnd = WinGetHandle($practice)
; FullScreen
WinSetState($practice,"",@SW_RESTORE)
WinSetState($practice,"",@SW_MAXIMIZE)
RunWait(@ComSpec & " /c " & "TestStart.bat")
但是,这并没有像预期的那样重新获得焦点并最大化 window,我认为应用程序启动画面可能会产生干扰。
如果我手动单击进入应用程序的任何部分以聚焦它,那么对话框将设置为全屏,然后我的第二个脚本将 运行。
我应该怎么做才能使脚本的最后一部分按照我的意愿运行?
WinActivate ( "title" [, "text"] ) - Activates (gives focus to) a window.
title - The title/hWnd/class of the window to activate. See Title special definition.
text [optional] The text of the window to activate. Default is an empty string. See Text special definition.
更多信息here。
这就是我最终解决问题的方式
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 之前手动给予控制焦点