Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用appium在两个本机应用程序之间切换_Appium_Appium Android - Fatal编程技术网

如何使用appium在两个本机应用程序之间切换

如何使用appium在两个本机应用程序之间切换,appium,appium-android,Appium,Appium Android,我想在两个应用程序之间切换,而不丢失应用程序的先前状态。我们如何使用appium实现这一点 情景: 1.启动任何需要OTP登录的应用程序(例如:filpkart) 2.启动SMS应用程序并读取OTP 3.关闭短信应用程序,切换回第一个应用程序,并进入OTP,我们从短信应用程序读取它 谁能帮我一下吗 问候,, 希瓦·奥列蒂更新 为此,您需要定义两个具有不同端口的AppiumServer,两个AppiumDriver(一个用于sms应用程序,另一个用于其他应用程序) 使用两个不同的端口启动appiu

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

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

谁能帮我一下吗

问候,,
希瓦·奥列蒂更新

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

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

public static AppiumDriver<MobileElement> driver1;
public static AppiumDriver<MobileElement> smsDriver;
现在,如果要再次切换到app2,请使用:
驱动程序2.激活EAPP(第二个应用程序的应用程序包)

更新

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

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

public static AppiumDriver<MobileElement> driver1;
public static AppiumDriver<MobileElement> smsDriver;
现在,如果要再次切换到app2,请使用:
驱动程序2.激活EAPP(第二个应用程序的应用程序包)

如果您想在后台发送应用程序,只需使用
driver.CloseApp()
函数并通过
driver.OpenApp()重新启动即可

您也可以使用按键编码方法,下面是代码

Home Menu Button - 82
Back Button - 4
Recent app - 187

然后从消息执行getOTP活动,然后切换回主应用程序。如果您想在后台发送应用程序,只需使用
driver.CloseApp()
函数,然后通过
driver.OpenApp()重新启动它

您也可以使用按键编码方法,下面是代码

Home Menu Button - 82
Back Button - 4
Recent app - 187

然后从消息执行getOTP活动,然后切换回主应用程序步骤1:-正常启动应用程序,通过所有所需功能(例如Flipkart应用程序)

步骤2):-执行操作以获取OTP

步骤3):-收到OTP后,尝试将消息传递应用程序的AppPackage和AppActivity传递给下面的方法(通过adb shell命令获取应用程序的Package和activity)

步骤5)。完成后,找到需要复制otp的字段的Xpath。粘贴它,然后继续


附言:-这与Android应用程序配合得很好。

步骤1:-正常启动应用程序,通过所有所需功能(例如Flipkart应用程序)

步骤2):-执行操作以获取OTP

步骤3):-收到OTP后,尝试将消息传递应用程序的AppPackage和AppActivity传递给下面的方法(通过adb shell命令获取应用程序的Package和activity)

步骤5)。完成后,找到需要复制otp的字段的Xpath。粘贴它,然后继续


注意:-这在Android应用程序中运行良好。

但问题是,当切换到app1时,它会从头开始重新启动,而不是以前的状态。有什么想法吗?我已经更新了我的答案。你可以检查它是否适合你。你可以使用driver.activateApp(“应用程序包切换应用程序”),但这里的问题是,当切换到应用程序1时,它会从头开始重新启动,而不是以前的状态。有什么想法吗?我已经更新了我的答案。您可以检查它是否适合您。您可以使用driver.activateApp(“切换应用程序的应用程序包”)
Home Menu Button - 82
Back Button - 4
Recent app - 187
    public String startNewAndroidActivity(String AppPacakge, String AppActivity) throws 
    Exception{
    String actvty = null;
    Activity activity = new Activity(AppPacakge, AppActivity);
    activity.setAppWaitPackage(AppPacakge);
    activity.setAppWaitActivity(AppActivity);
    activity.setStopApp(false);
    try {
    ((AndroidDriver<MobileElement>) driver).startActivity(activity);
    Thread.sleep(1000);
    actvty = ((StartsActivity) driver).currentActivity();
    System.out.println(actvty);
    }
    catch (Exception e) {
        System.out.println("Error occured while starting new Activity 
    "+e.getMessage());
        e.printStackTrace();
    }
    return actvty;

    }
    public boolean closeApplication() throws Exception {
    boolean flag = false;

    if(driver!=null) {
        driver.closeApp();
        flag = true;

     }

      return flag;
     }