【发布时间】:2021-01-02 18:08:28
【问题描述】:
为了测试注册中的重复,我需要关闭并重新启动iOS应用程序。任何人都可以提供最好和简单的脚本来关闭应用程序并使用Appium和JAVA在iOS中重新启动相同的应用程序?
【问题讨论】:
标签: appium appium-ios
为了测试注册中的重复,我需要关闭并重新启动iOS应用程序。任何人都可以提供最好和简单的脚本来关闭应用程序并使用Appium和JAVA在iOS中重新启动相同的应用程序?
【问题讨论】:
标签: appium appium-ios
可以通过以下方式实现:
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileCapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
public class SampleTest {
AppiumDriver<?> appiumDriver;
final String URL_STRING = "http://127.0.0.1:4723/wd/hub";
URL url = new URL(URL_STRING);
public SampleTest() throws MalformedURLException {
}
@BeforeTest
public void beforeTest() {
File appDir = new File("path to ipa file");
File app = new File(appDir, "app.ipa");
DesiredCapabilities iOSCapabilities = new DesiredCapabilities();
iOSCapabilities.setCapability(MobileCapabilityType.PLATFORM, "iOS");
iOSCapabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "XCUITest");
iOSCapabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone6s");
iOSCapabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "11.2.1");
iOSCapabilities.setCapability(MobileCapabilityType.UDID, "udid");
iOSCapabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
appiumDriver = new IOSDriver(url, iOSCapabilities);
}
@Test
public void test() {
//perform some test
}
@AfterTest
public void afterTest() {
// following command will close and restart the app
appiumDriver.resetApp();
}
}
您可能需要查看this 了解更多详情。
【讨论】:
使用驱动driver.resetApp(),像这样
try{
LOG.debug("reset app");
driver.resetApp();
} catch (WebDriverException e){
LOG.error("ERROR on reset app, e: ",e);
}
【讨论】:
Appium 允许您在设备上启动任何预安装的应用程序,因此您可以先使用closeApp,然后再使用launchApp 和您的应用程序包 id:
// closing app
driver.closeApp();
// launch app again
HashMap<String, Object> args = new HashMap<>();
args.put("bundleId", APP_BUNDLE_ID);
driver.executeScript("mobile: launchApp", args);
【讨论】: