如何使用Sikuli框架终止应用程序?现在我正在使用这样的结构关闭它:
App app = new App(pathToApplication);
amm.open();
//some actions
app.close();
但它不起作用,应用程序没有关闭。我需要一些解决方案来关闭@AfterTest方法中的applocation以关闭它,即使测试失败也是如此。
我建议你使用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();
}
您可以将整个应用程序包装在try ... catch语句中。只需将代码放在主脚本中:
try {
// Your code goes here
app.close();
}
catch (Exception e) {
app.close();
exit();
}
在任何异常错误上,您的脚本将打印消息并正常退出并关闭测试的应用程序。