我需要在测试中间等待 5 分钟,但 Appium 会话的默认newCommandTimeout 为 60 秒。我在下一个命令中得到异常,我的会话超时。
AndroidDriver appiumDriver = new AndroidDriver(new URL(getMcmUrl()), capabilities);
Thread.sleep(5*60*1000); // 5 minutes sleep time
appiumDriver.executeScript("...")
我需要在测试中间等待 5 分钟,但 Appium 会话的默认newCommandTimeout 为 60 秒。我在下一个命令中得到异常,我的会话超时。
AndroidDriver appiumDriver = new AndroidDriver(new URL(getMcmUrl()), capabilities);
Thread.sleep(5*60*1000); // 5 minutes sleep time
appiumDriver.executeScript("...")
新命令超时:
在假设客户端退出并结束会话之前,Appium 将等待来自客户端的新命令多长时间(以秒为单位)
如果超时为 60 秒,您需要每分钟至少执行一次任何命令,以保持会话处于活动状态。
例如,这就是睡眠 5 分钟的样子
for (int i = 0; i < 5; i++) {
driver.getOrientation(); // execute some command to keep the session alive
Thread.sleep(59*1000); // wake up before session expired
}
阅读本文了解更多信息
https://l18.me/how-to-keep-alive-appium-driver-da9227b2fa
在您的DesiredCapabilities添加新的CommandTimeout功能。
DesiredCapabilities caps=new DesiredCapabilities();
//other desired caps
//add the following line
caps.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, 300);
//then define your driver here
AppiumDriver<MobileElement> driver= new AndroidDriver(new URL(getMcmUrl()), caps);
newCommandTimeout 表示 Appium 在假设客户端退出并结束会话之前将等待来自客户端的新命令多长时间(以秒为单位)。
300 秒 = 5 分钟
您是否考虑过并放弃了覆盖 newCommandTimeout?这肯定会奏效,但也有缺点。
尝试使用此命令,
"cap.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, "100");"
通过此命令,appium 服务器将在关闭之前等待 100 秒的命令。您可以根据自己的喜好增加超时时间。