Appium - App在测试完成之前关闭

时间:2015-10-02 15:45:24

标签: java android testng appium

我有一个Windows 7,我正在使用Appium测试Android Native应用程序。使用的框架是TestNG。我用的是Java。在关闭应用程序之前,Appium会等待60秒。应用程序中的搜索结果需要一些时间(特别是使用Appium时)现在有时我插入等待以便应用程序不会关闭,但无济于事。在@After我甚至删除了driver.close()。这导致测试没有完成

4 个答案:

答案 0 :(得分: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设置自定义超时和轮询间隔。 Selenium对此有documentation

答案 1 :(得分:1)

您可以通过添加功能来增加appium会话 “newCommandTimeout”。

对于Ex:如果你想等待5分钟。

  

capabilities.setCapability(“newCommandTimeout”,60 * 5);

答案 2 :(得分: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;
}

答案 3 :(得分:0)

newCommandTimeout :在假设客户端退出并结束会话之前,Appium将等待来自客户端的新命令多久(以秒为单位)

例如:

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