如何长时间维持Appium会话

时间:2019-01-22 12:09:34

标签: webdriver appium appium-ios appium-android appium-desktop

我需要在测试过程中等待5分钟,但是Appium会话具有默认的newCommandTimeout of 60s.,并且在下一个命令我的会话超时的情况下出现异常。

AndroidDriver appiumDriver = new AndroidDriver(new URL(getMcmUrl()), capabilities);
Thread.sleep(5*60*1000); // 5 minutes sleep time
appiumDriver.executeScript("...")

4 个答案:

答案 0 :(得分:3)

newCommandTimeout:

  

在假设客户端退出并结束会话之前,Appium将等待客户端发出新命令的时间(以秒为单位)

如果超时为60s,则您需要至少每分钟执行一次命令以保持会话存活。

例如,这就是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

答案 1 :(得分:1)

尝试使用此命令

“ cap.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT,” 100“);”

通过此命令,appium服务器将在关闭前等待100秒以执行命令。您可以根据自己的喜好增加超时时间。

答案 2 :(得分:1)

在您的 DesiredCapabilities 中添加 newCommandTimeout 功能。

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分钟

答案 3 :(得分:0)

您是否考虑过并且不考虑重写newCommandTimeout?那当然可以,但是有缺点。