首页 > 解决方案 > 如何使用 appium 在两个本机应用程序之间切换

问题描述

我想在两个应用程序之间切换而不会丢失应用程序的先前状态。我们如何使用 appium 来实现这一点。

场景: 1. 启动任何需要 OTP 登录的应用程序(例如:filpkart) 2. 启动 SMS 应用程序并读取 OTP 3. 关闭 SMS 应用程序并切换回第一个应用程序并输入我们从 SMS 应用程序读取的 OTP。

有人可以帮我解决这个问题。

问候, 湿婆奥莱蒂

标签: appiumappium-android

解决方案


更新

为此,您需要定义两个具有不同端口的 AppiumServer、两个AppiumDriver 一个用于 sms 应用程序,另一个用于另一个应用程序)。

使用 2 个不同的端口启动 appium 驱动程序,例如:4723 和 4724。定义 2 个驱动程序:

public static AppiumDriver<MobileElement> driver1;
public static AppiumDriver<MobileElement> smsDriver;

为两个应用程序定义DesiredCapabilities并初始化两个驱动程序。

首先打开并登录。

 public void startApp1(){
  DesiredCapabilities cap1 = new DesiredCapabilities();
  cap1.setCapability(MobileCapabilityType.NO_RESET, true);
  cap1.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, 600);
  cap1.setCapability(MobileCapabilityType.DEVICE_NAME, "android device");
  cap1.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID);
  cap1.setCapability("appPackage", "your app1 package name");
  cap1.setCapability("appActivity", "your app1 package name");
  cap1.setCapability(MobileCapabilityType.AUTOMATION_NAME, "uiautomator2");

  driver1 = new AndroidDriver<MobileElement>(new URL("http://127.0.0.1:4723/wd/hub"), caps);
}

之后启动短信并执行操作

public void startApp2(){
DesiredCapabilities cap2 = new DesiredCapabilities();
cap2.setCapability(MobileCapabilityType.NO_RESET, true);
cap2.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, 600);
cap2.setCapability(MobileCapabilityType.DEVICE_NAME, "android device");
cap2.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID);
cap2.setCapability("appPackage", "your app1 package name");
cap2.setCapability("appActivity", "your app1 package name");
cap2.setCapability(MobileCapabilityType.AUTOMATION_NAME, "uiautomator2");

smsDriver = new AndroidDriver<MobileElement>(new URL("http://127.0.0.1:4724/wd/hub"), caps);
}

现在要从 app1 切换到 app2,您可以使用调用 startApp2 方法。现在如果你想再次切换回来切换到app1。利用:

driver1.activateApp(appPackage of app1);

现在,如果您想再次切换到 app2,请使用: driver2.activateApp(appPackage of 2nd app);


推荐阅读