我正在执行以下步骤
设置功能并启动ABC应用。通过提供应用路径
capabilities.setCapability(“app”,“/ Users / Changdeojadhav / Library /Developer / Xcode / DelivedData / ABC / Build / Products / Debug-iphonesimulator / ABC.app”); capabilities.setCapability( “bundleId”, “com.abc.ABC-演示”);
执行一些操作
driver.quit()
driver.quit()
答案 0 :(得分:0)
据我所知,目前还没有办法在转到主屏幕后重新打开应用程序而不从缓存中清除应用程序。
在过去的iOS / Appium版本中,解决方案是:
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
当我记录github问题时,我会更新这个问题。
答案 1 :(得分:0)
Appium帮助页面说它只支持在没有Selendroid的Android的单个测试会话中进行多个应用测试:
iOS :支持在一个会话中自动化多个应用:否
Android :支持在一个会话中自动执行多个应用:是(但不是在使用Selendroid后端时)
我猜这就是你遇到这个问题的原因,而且它很可能是一个仪器/ XCode问题。
答案 2 :(得分:0)
我能够重新启动相同的应用程序而不会在运行Mavericks的Mac Mini上运行Xcode 6.1的Appium 1.3.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);
...
答案 3 :(得分:-1)
据我所知,Appium默认运行在快速重置模式,它会在会话结束时尝试清除应用程序的数据(由于{{1}的调用} 在这种情况下)。如果您想要保留应用的数据,选项quit()
应该适合您。