对于 Sikulix,Mac 上的 App.close() 会关闭应用程序,但 returns 为 false。这个对吗?
For Sikulix, App.close() on Mac closes the app, but returns false. Is this correct?
我正在 Java 中构建一个 SikuliX 自动化脚本,并且对 .close()
方法的行为感到困惑。
Sikuli的App
class里面的close方法如下:
/**
* tries to close the app defined by this App instance, waits max given seconds for the app to no longer be running
*
* @return this or null on failure
*/
public boolean close(int waitTime) {
if (!isRunning()) {
log("App.close: not running: %s", this);
return false;
}
if (_osUtil.close(this)) {
int timeTowait = maxWait;
if (waitTime > 0) {
timeTowait = waitTime;
}
while (isRunning(0) && timeTowait > 0) {
timeTowait--;
}
}
if (!isValid()) {
log("App.close: %s", this);
} else {
log("App.close: did not work: %s", this);
return true;
}
return false;
}
对我来说有问题的部分是 return。我的理解是,由于它 return 是一个布尔值,如果关闭成功则为 true,如果关闭失败则为 false。但是,此代码的作用恰恰相反。
基于我对这个逻辑的错误(?)理解,我最初是这样写我的代码的,
if (myApp.close()) {
System.out.println("closed.");
isAppClosed = true;
} else {
System.out.println("NOT closed!");
isAppClosed = false;
}
这与我想要的结果相反,因为应用程序已成功关闭,但测试失败,因为正在打印“未关闭”。
我是不是发现了一个错误,或者我遗漏了什么?
谢谢。
原来这是一个错误。该项目的维护者已在 1.1.4 的最新版本中修复了该问题。
https://bugs.launchpad.net/sikuli/+bug/1811938
我正在 Java 中构建一个 SikuliX 自动化脚本,并且对 .close()
方法的行为感到困惑。
Sikuli的App
class里面的close方法如下:
/**
* tries to close the app defined by this App instance, waits max given seconds for the app to no longer be running
*
* @return this or null on failure
*/
public boolean close(int waitTime) {
if (!isRunning()) {
log("App.close: not running: %s", this);
return false;
}
if (_osUtil.close(this)) {
int timeTowait = maxWait;
if (waitTime > 0) {
timeTowait = waitTime;
}
while (isRunning(0) && timeTowait > 0) {
timeTowait--;
}
}
if (!isValid()) {
log("App.close: %s", this);
} else {
log("App.close: did not work: %s", this);
return true;
}
return false;
}
对我来说有问题的部分是 return。我的理解是,由于它 return 是一个布尔值,如果关闭成功则为 true,如果关闭失败则为 false。但是,此代码的作用恰恰相反。 基于我对这个逻辑的错误(?)理解,我最初是这样写我的代码的,
if (myApp.close()) {
System.out.println("closed.");
isAppClosed = true;
} else {
System.out.println("NOT closed!");
isAppClosed = false;
}
这与我想要的结果相反,因为应用程序已成功关闭,但测试失败,因为正在打印“未关闭”。
我是不是发现了一个错误,或者我遗漏了什么?
谢谢。
原来这是一个错误。该项目的维护者已在 1.1.4 的最新版本中修复了该问题。 https://bugs.launchpad.net/sikuli/+bug/1811938