如何使用Sikuli框架终止应用程序?现在,我正在使用这种结构将其关闭:
App app = new App(pathToApplication);
amm.open();
//some actions
app.close();
但是它不起作用,并且应用程序没有关闭。而且我需要一些解决方案来关闭@AfterTest方法中的分配,即使测试失败也可以关闭它。
答案 0 :(得分:0)
我建议您使用app.closeByKey()
,它会尝试使应用程序排在前面,然后使用系统特定的组合键(Alt-F4,cmd-Q,ctrl-Q)正常关闭应用程序,可能并非总是使用普通的app.close()即可完成。
在此处阅读文档 https://sikulix-2014.readthedocs.io/en/latest/appclass.html#App
它可以从版本Sikulix 1.1.0中获得。下面是它的Maven依赖项
<!-- https://mvnrepository.com/artifact/com.sikulix/sikulixapi -->
<dependency>
<groupId>com.sikulix</groupId>
<artifactId>sikulixapi</artifactId>
<version>1.1.4-SNAPSHOT</version>
</dependency>
以下是关闭应用程序的另一种方法,直到获得1.1.4的稳定版本:
app.focus();
type(Key.F4, Key.ALT); ----> For WINDOWS
type("q", Key.CMD); ----> For MAC
type("q", Key.CTRL);-----> For LINUX
如果要关闭所有打开的应用程序,请使用以下代码:
for (App app : App.getApps()) {
app.closeByKey();
}
答案 1 :(得分:0)
如果被测试的应用程序仍然具有焦点(可能已经具有焦点),则只需发送:
type(Key.F4, KeyModifier.ALT)
答案 2 :(得分:0)
您可以将整个应用程序包装在try ... catch语句中。只需将代码放在您的主脚本中即可:
try {
// Your code goes here
app.close();
}
catch (Exception e) {
app.close();
exit();
}
在发生任何异常错误时,您的脚本将打印该消息,并在关闭已测试的应用程序后正常退出。