У меня есть окна 7, и я тестирую приложение Android Native с помощью Appium. Используемая структура - TestNG. Я использую Java. Appium ждет 60 секунд до закрытия приложения. Результаты поиска в приложении занимают некоторое время (особенно при использовании Appium). Теперь есть моменты, когда я вставил ожидания, чтобы приложение не закрывалось, но безрезультатно. В @ После того, как я даже удалил driver.close(). Это приводит к тому, что тесты не завершаются.Appium - приложение закрывается до завершения теста
ответ
Есть несколько вещей, которые вы можете сделать, чтобы убедиться, что приложение не просто закрывается при ожидании теста. Во-первых, вы можете установить тайм-аут простоя, время ожидания команды и/или максимальную продолжительность для ваших тестов. Sauce Labs имеет documentation на этих таймаутах. Я считаю, что вы можете установить те в DesiredCapabilities, а также:
protected DesiredCapabilities capabilities;
public void setIdleTimeout(String idleTimeout) {
if (idleTimeout != null && !idleTimeout.isEmpty()) {
this.capabilities.setCapability("idle-timeout", idleTimeout);
}
}
public void setCommandTimeout(String commandTimeout) {
if (commandTimeout != null && !commandTimeout.isEmpty()) {
this.capabilities.setCapability("command-timeout", commandTimeout);
}
}
public void setMaxDuration(String maxDuration) {
if (maxDuration != null && !maxDuration.isEmpty()) {
this.capabilities.setCapability("max-duration", maxDuration);
}
}
Во-вторых, вам, возможно, потребуется ввести fluentWait если тест ждет, чтобы утверждать результаты поиска. Вы можете настроить пользовательский тайм-аут и интервал опроса с помощью fluentWait. Selenium имеет documentation.
Вы можете увеличить сеанс appium, добавив возможность «newCommandTimeout».
Для примера: Если вы хотите подождать 5 минут.
capability.setCapability ("newCommandTimeout", 60 * 5);
Один из вариантов - setCapability
.
capabilities.setCapability(COMMAND_TIMEOUT_KEY, COMMAND_TIMEOUT_VALUE);
Другой вариант - дождаться некоторых изменений на целевой странице с таймаутом.
public boolean waitForElement(String element, int timeout) {
WebDriverWait wait = new WebDriverWait(appiumDriver, timeout/1000);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(element)));
return true;
}
Значение таймаута в миллисекундах. –
newCommandTimeout: Как долго (в секундах) Appium будет ждать новой команды от клиента, прежде чем приступить клиент бросить и окончание сессии
для например:
capabilities.setCapability("newCommandTimeout", 1000); // wait for 1000 milliseconds to run new command
Пожалуйста разместите все соответствующие коды. – Shamik