2015-10-02 2 views
0

У меня есть окна 7, и я тестирую приложение Android Native с помощью Appium. Используемая структура - TestNG. Я использую Java. Appium ждет 60 секунд до закрытия приложения. Результаты поиска в приложении занимают некоторое время (особенно при использовании Appium). Теперь есть моменты, когда я вставил ожидания, чтобы приложение не закрывалось, но безрезультатно. В @ После того, как я даже удалил driver.close(). Это приводит к тому, что тесты не завершаются.Appium - приложение закрывается до завершения теста

+0

Пожалуйста разместите все соответствующие коды. – Shamik

ответ

1

Есть несколько вещей, которые вы можете сделать, чтобы убедиться, что приложение не просто закрывается при ожидании теста. Во-первых, вы можете установить тайм-аут простоя, время ожидания команды и/или максимальную продолжительность для ваших тестов. 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.

1

Вы можете увеличить сеанс appium, добавив возможность «newCommandTimeout».

Для примера: Если вы хотите подождать 5 минут.

capability.setCapability ("newCommandTimeout", 60 * 5);

0

Один из вариантов - 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; 
} 
+1

Значение таймаута в миллисекундах. –

0

newCommandTimeout: Как долго (в секундах) Appium будет ждать новой команды от клиента, прежде чем приступить клиент бросить и окончание сессии

для например:

capabilities.setCapability("newCommandTimeout", 1000); // wait for 1000 milliseconds to run new command