【问题标题】:How to switch from one app to another app at run time如何在运行时从一个应用程序切换到另一个应用程序
【发布时间】:2014-05-07 18:42:32
【问题描述】:

是否有可能在运行时使用 Appium 从一个应用程序切换到另一个应用程序。

谢谢

【问题讨论】:

    标签: appium


    【解决方案1】:

    终于找到了准确的答案,希望对某些人有用

    来源https://www.linkedin.com/grp/post/6669152-6027319885992841219?trk=groups-post-b-title

     // App1 capabilities
     String calculatorAppPackageName="com.android.calculator2";
     String calculatorAppActivityName="com.android.calculator2.Calculator";
    
    // App2 capabilities
     String settingsAppPackageName="com.android.settings";
     String settingsAppActivityName="com.android.settings.Settings";
    
     @Before
     public void setUp() throws MalformedURLException
     {
            DesiredCapabilities capabilities = DesiredCapabilities.android();
            capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "Appium");
            capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
            capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "192.168.215.101:5555");
            capabilities.setCapability(MobileCapabilityType.APP_PACKAGE, calculatorAppPackageName);
            capabilities.setCapability(MobileCapabilityType.APP_ACTIVITY, calculatorAppActivityName);
            driver = new AndroidDriver(new URL("http://localhost:4723/wd/hub"), capabilities);
            driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    
     }
    
     @Test
        public void testApp() throws InterruptedException, MalformedURLException
        {
            //Perform calculation in calculator
            driver.findElement(By.name("4")).click();
            driver.findElement(By.name("×")).click();
            driver.findElement(By.name("3")).click();
            driver.findElement(By.name("=")).click();
    
            //launch settings App
            driver.startActivity(settingsAppPackageName, settingsAppActivityName);
    
            //Switch OFF WIFI
            driver.findElement(By.id("com.android.settings:id/switchWidget")).click();
    
            //Re launch calculator App
            driver.startActivity(calculatorAppPackageName, calculatorAppActivityName);
    
            //Validate results
            String result = driver.findElement(By.className("android.widget.EditText")).getText();
            System.out.println("Result : " + result);
            Assert.assertEquals("Incorrect Result", "12", result);
        }
    

    【讨论】:

    • 有没有办法在 iOS 中实现这一点?
    • 只是命令的更新 - driver.startActivity(settingsAppPackageName, settingsAppActivityName);现在变了,新的startActivity执行方式是:driver.startActivity(new Activity(settingsAppPackageName, settingsAppActivityName));
    【解决方案2】:

    您可以通过使用新应用程序的属性重新实例化 webdriver 来更改应用程序。

    driver = webdriver.Remote(appiumUrl,dcapabilityApp1)
    [Your tests]
    driver = webdriver.Remote(appiumUrl,dcapabilityApp2)
    [New app tests]
    

    只要您不关闭/断开模拟器/模拟器/设备,您的用户数据就会被保留。

    【讨论】:

    • 您好 jkbz,感谢您的回复 :) 我正在使用 JAVA API,您知道 java 等效 webdriver.Remote 我们是否需要更改新的驱动程序实例的 appium 端口号 = webdriver .Remote(appiumUrl,dcapabilityApp2 [新应用测试]
    • 你不应该改变端口; appiumUrl(上图)包含 IP 和端口。
    • 感谢 jkbz 的回答。作为第二步的一部分,我可以启动已经安装在设备上的设备,我的意思是说我没有该应用程序的 .app 或 .ipa 文件,但它已安装。提前致谢
    • @ChangdeoJadhav - 只要您有应用程序标识符(包 ID、应用程序活动)等,您就可以使用 appium 访问任何应用程序(预安装或本机)。就我个人而言,我只有 appium 安装如果我必须(iOS、Selendroid 等)使用 ADB 来代替应用程序。
    • @jkbz 我在上面为 iOS 尝试过,但出现以下异常 java.lang.AssertionError: Execution Failed due toA new session could not be created。 (原始错误:请求了一个新会话,但一个正在进行中)(警告:服务器没有提供任何堆栈跟踪信息)。我需要清除以前的会话吗?你能告诉我怎么做吗?
    【解决方案3】:

    你可以使用:

    driver.startActivity(settingsAppPackageName, settingsAppActivityName);
    

    使用相同的代码调用另一个应用程序。

    【讨论】:

      【解决方案4】:

      driver.startActivity() 方法可用于在应用程序之间切换。有关其工作原理的更多详细信息,您可以查看以下视频。

      在 YouTube 上观看“Appium 教程 - 在应用程序之间切换(联系人和短信)” https://youtu.be/sH1bHeDDj8U

      【讨论】:

      • 视频没有显示从一个应用程序切换到另一个应用程序的代码示例。
      猜你喜欢
      • 1970-01-01
      • 2020-01-28
      • 1970-01-01
      • 1970-01-01
      • 2018-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多