【问题标题】:Switch to different app while in appium session在 appium 会话中切换到不同的应用程序
【发布时间】:2017-05-04 07:48:33
【问题描述】:

当我在“原始”应用 A 的测试会话中时,我想切换到不同的应用 B。目的是将数据从应用 B 发送到应用 A。

我已经尝试使用不同的功能重新启动我的驱动程序,并且我尝试在我的测试代码中使用两个不同的驱动程序。但这些都不起作用。

有没有人建议如何实现切换?我正在使用 mac 顺便说一句。 提前谢谢!

【问题讨论】:

    标签: testing automated-tests appium ui-automation


    【解决方案1】:

    如果切换已在您的应用中实现并自动发生,那么您应该能够只使用当前的应用定位器。

    如果您需要单独打开应用程序,您可以通过执行quit() 并在之后创建新的来重新初始化驱动程序。

    mobileDriver.quit()
    mobileDriver = new IOSDriver(url, capabilities)
    

    【讨论】:

    • 所以我可以创建一个新的驱动程序实例,其功能与 appium GUI 中提供的功能不同?
    • 我正在使用它来重新启动一个应用程序,但我认为应该可以使用您提供的正确功能启动另一个应用程序。
    • 在我的情况下,例如,当我提供不同的 .apk 文件时,它不起作用
    • 很难说。我猜你没有正确完成第一个会话。这必须有效,因为基本上您只需完成上一个会话并在测试中创建一个新会话。就像运行两个测试一样。
    【解决方案2】:

    如果您要自动化 Android 测试,这很容易。如果您是用户,只需自动执行步骤

    • 按 Home 键,您可以通过 Appium 完成,但我建议致电 adb 通过代码,例如adb shell input keyevent KEYCODE_HOME
    • 通过定位器打开应用菜单和应用 B

    或者你可以通过 adb 启动应用 B,例如启动 Chrome adb shell am start com.android.chrome

    【讨论】:

      【解决方案3】:

      参考此示例代码:

       public class Switch_activity {
      
       public static void main(String[] args) throws IOException, InterruptedException {
          // TODO Auto-generated method stub
      
           String Start_Server="D:\\Appium\\node.exe  D:\\Appium\\node_modules\\appium\\bin\\appium.js";
      
          Process process = Runtime.getRuntime().exec(Start_Server);
      
          if(process!=null)
          {
              System.out.println("Appium Server is Started");
          }
          else
          {
              System.out.println("NOT able to Start the Server");
          }
      
          Thread.sleep(12000);
      
          //Launch app
                  DesiredCapabilities capabilities= new DesiredCapabilities();
      
                  //device details
                  capabilities.setCapability("deviceName", "GT-I9300I");
                  capabilities.setCapability("platformName", "Android");
                  capabilities.setCapability("platformVersion", "4.4.4");
      
                  //app details
                  capabilities.setCapability("appPackage", "com.olacabs.customer");
                  capabilities.setCapability("appActivity", "com.olacabs.customer.ui.SplashActivity");
      
                  //appium server details
                  AndroidDriver driver= new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
      
                  Thread.sleep(8000);
      
                  driver.findElementById("android:id/button1").click();
                  //wait
                  WebDriverWait wait= new WebDriverWait(driver, 35);
                  WebElement until = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("com.olacabs.customer:id/button_ride_now")));
                  System.out.println(until.isDisplayed());
      
                  driver.findElementById("com.olacabs.customer:id/button_ride_now").click();
                  Thread.sleep(4000);
      
                  String text = driver.findElementById("com.olacabs.customer:id/button_ride_conform").getText();
                  System.out.println(text);
                  Thread.sleep(4000);
      
                  driver.sendKeyEvent(AndroidKeyCode.BACK);
                  //******************************************************
                  Thread.sleep(8000);
                  //Message app
      
      
                  Thread.sleep(8000);
                  //Try in this way
                  driver.startActivity("com.flipkart.android", "com.flipkart.android.activity.HomeFragmentHolderActivity");
      
                  WebDriverWait wait3= new WebDriverWait(driver, 35);
                  WebElement until3 = wait3.until(ExpectedConditions.presenceOfElementLocated(By.id("com.flipkart.android:id/search_widget_textbox")));
                  System.out.println(until3.isDisplayed());
      
                  driver.findElementById("com.flipkart.android:id/search_widget_textbox").click();
                  Thread.sleep(4000);
      
      
      
      
      
                  if(process!=null)
                  {
                      Thread.sleep(4000);
      
                      process.destroy();                      
                      System.out.println("Appium Server is Stopped");
      
      
                  }
      
      
      
             }
      
        }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-04
        • 2016-07-27
        • 2018-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-08
        • 2023-03-23
        相关资源
        最近更新 更多