如何长时间维持Appium会话

Elh*_*zer 4 webdriver appium appium-ios appium-android appium-desktop

我需要在测试中间等待5分钟,但Appium会话的默认newCommandTimeout为60s。并且在下一个命令我的会话超时的指令中出现异常。

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

Elh*_*zer 5

newCommandTimeout:

在假设客户端退出并结束会话之前,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
}
Run Code Online (Sandbox Code Playgroud)

阅读本文以获取更多信息
https://l18.me/how-to-keep-alive-appium-driver-da9227b2fa


Sub*_*ako 5

在您的DesiredCapability中添加新的 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);    
Run Code Online (Sandbox Code Playgroud)

newCommandTimeout 表示 Appium 在假定客户端退出并结束会话之前将等待来自客户端的新命令的时间(以秒为单位)。

300 秒 = 5 分钟