Как прекратить применение с использованием Sikuli - PullRequest
0 голосов
/ 14 марта 2019

Как завершить приложение с помощью фреймворка Sikuli?Сейчас я использую такую ​​конструкцию, чтобы закрыть ее:

App app = new App(pathToApplication);
amm.open();
//some actions
app.close();

Но она не работает, и приложение не закрывается.И мне нужно какое-то решение, чтобы закрыть приложение в методе @AfterTest, чтобы закрыть его, даже если тест не пройден.

Ответы [ 3 ]

0 голосов
/ 14 марта 2019

Если тестируемое приложение все еще имеет фокус (как оно, вероятно, имеет), вы можете просто отправить:

 type(Key.F4, KeyModifier.ALT)
0 голосов
/ 14 марта 2019

Вы можете заключить все ваше приложение в операторы try ... catch.Просто вставьте этот код в ваш основной скрипт:

try {
    // Your code goes here
    app.close();
}
catch (Exception e) {
    app.close();
    exit();
}

При любой ошибке исключения ваш скрипт распечатает сообщение и будет корректно завершать работу с закрытием протестированного приложения.

0 голосов
/ 14 марта 2019

Я бы предложил вам использовать app.closeByKey(), оно пытается вывести приложение на передний план, а затем использовать системную комбинацию клавиш (Alt-F4, cmd-Q, ctrl-Q), чтобы изящно закрыть приложение, которое может не всегда выполняется с помощью обычного app.close ().

Читайте документы здесь https://sikulix -2014.readthedocs.io / о / последние / 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();
  }
...