iOS应用程序在创build新的appium会话时重置
我正在执行以下步骤
-
设置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-演示”);
-
执行一些操作
- 通过
driver.quit()
退出驱动程序 - 设置Xyz应用程序的function。 并启动XYZ应用程序
- 执行一些步骤
- 通过
driver.quit()
退出驱动程序 - 重新启动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后端时)
我猜这就是为什么你有这个问题,这很可能是一个仪器/ 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
应该为你工作。