iOS应用程序在创build新的appium会话时重置

我正在执行以下步骤

  1. 设置function并启动ABC应用程序。 通过提供应用path

    capabilities.setCapability(“app”,“/Users/changdeojadhav/Library/Developer/Xcode/DerivedData/ABC/Build/Products/Debug-iphonesimulator/ABC.app”); capabilities.setCapability( “bundleId”, “com.abc.ABC-演示”);

  2. 执行一些操作

  3. 通过driver.quit()退出驱动程序
  4. 设置Xyz应用程序的function。 并启动XYZ应用程序
  5. 执行一些步骤
  6. 通过driver.quit()退出驱动程序
  7. 重新启动ABC应用,如步骤#1所述。 预计“应用程序ABC应保持它的状态”,但ABC被重置。 我用–no-reset参数启动了appium。 任何关于我在这里失踪的想法谢谢

据我所知,目前还没有解决scheme,重新打开应用程序后进入主屏幕而不清除应用程序caching。

在过去的iOS / Appium版本中,解决scheme是:

 from appium import webdriver driver = webdriver.Remote('http://0.0.0.0:4723/wd/hub', desired_caps) driver.close_app() app = driver.find_element_by_xpath('//UIAApplication/UIAWindow/UIAScrollView/UIAButton[@name="sampleApp"]') app.click() 

但是,这个目前崩溃了Appium

当我logingithub问题时,我会更新这个问题。

Appium帮助页面表示,它仅支持在没有Selendroid的Android的单个testing会话中进行多个应用程序testing:

iOS :支持在一个会话中自动执行多个应用程序:否

Android :支持在一个会话中自动化多个应用程序:是(但不是在使用Selendroid后端时)

http://appium.io/slate/en/master/?ruby#toc​​_27

我猜这就是为什么你有这个问题,这很可能是一个仪器/ XCode的问题。

我能够重新启动相同的应用程序,而不用重置它的状态与Appium 1.3.1与运行Mavericks的Mac Mini上的Xcode 6.1运行。 我没有尝试在启动之间启动另一个应用程序。 我正在从C#驱动自动化。

  protected AppiumDriver GetAppiumDriver(bool forRestart = false) { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.SetCapability("appium-version", "1.0"); capabilities.SetCapability("platformName", "iOS"); capabilities.SetCapability("platformVersion", "7.1"); capabilities.SetCapability("deviceName", "iPhone Simulator"); capabilities.SetCapability("app", _appPath); capabilities.SetCapability("locationServicesEnabled", true); if (forRestart) { capabilities.SetCapability("noReset", true); } AppiumDriver driver = new AppiumDriver(_serverUrl), capabilities, new TimeSpan(0, 5, 0)); return driver; } public void iOSMobileAppBasicUITest() { // Initially Launch the app with the noReset capability at its default value of false to ensure a clean starting point. _driver = GetAppiumDriver(false); //Shut down the app. _driver.Quit(); // Launch the app again, this time with the noReset capability set to true. _driver = GetAppiumDriver(true); // Use _driver to do whatever UI automation is desired. // Optional: Send the app to the background so that iOS does state preservation. _driver.BackgroundApp(3); // Close the app. _driver.CloseApp(); // Alternative: _driver.Quit(); // Launch the app. _driver.LaunchApp(); // Alternative: _driver = GetAppiumDriver(true); ... 

据我所知,Appium默认运行在快速重置模式下 ,当会话结束时(因为在这种情况下调用quit() ,它会尝试清除应用程序的数据)。 如果你想保持应用程序的数据,选项--no-reset应该为你工作。