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