【问题标题】:How to launch Android app from already opened activity with appium如何使用 appium 从已打开的活动中启动 Android 应用程序
【发布时间】:2017-01-03 22:14:57
【问题描述】:

我有两个测试用例:-

测试用例 1:- 在 android 应用上使用凭据登录并到达主屏幕。

测试用例 2:- 当我启动应用程序时,应该显示主页而不询问登录屏幕。

问题:-当我执行 appium 脚本时,它会使用登录屏幕启动应用程序并到达主屏幕。但是当我再次使用测试用例 2 执行脚本时,它再次从登录屏幕启动。我已经在使用无重置选项。

我需要它应该从主屏幕活动启动。每当我在某些活动上收到错误时,它应该在同一个活动上启动,而不是从头开始。

实际上的问题是,当我运行 appium 功能时,它会从头启动应用程序,而我需要它应该来自现有活动。怎么可能?

有人可以帮我吗?

问候 高拉夫

【问题讨论】:

  • 你能分享你的代码吗?

标签: java android appium


【解决方案1】:

看起来正在发生的事情是您使用 @BeforeTest@AfterTest 而应该使用 @BeforeClass@AfterClass

他们按照他们所说的去做。如果您在 @BeforeTest 中初始化您的 appiumDriver,它将在每次 测试之前启动一个新会话。如果您在 AfterTest 中使用 driver.close()driver.quit() 关闭/退出会话,那么在每次 测试 之后 它将被拆除并下次测试不会出现。

请改用@BeforeClass@AfterClass

您可以设置@priority 系统以确保测试按特定顺序完成。 Documentation here.

希望这会有所帮助,

利亚姆

【讨论】:

    【解决方案2】:

    你能分享你的测试脚本吗? 您是否在代码中的某处使用 driver.close() ,即在 @AfterTest 中,如果是,您可以将其注释掉并尝试。

    @BeforeTest
    public void setup()
    {
        //your setup logic
    }
    
    @Test
    public void busiLogic()
    {
        //business logic
    }
    
    @AfterTest
    public void tearDown()
    {
        //dont put driver.close()
    }
    

    这是我的假设,即您正在关闭测试脚本代码中的驱动程序。请发布您的代码。 Thanks

    【讨论】:

      【解决方案3】:

      请分享您对以下代码的看法:

      公共类测试1 {

      WebDriver 博士;

      DesiredCapabilities capabilities;
      
      @Test
      public void testapp() throws MalformedURLException, InterruptedException {
      
      
      
      
          File app = new File("D:\\Appium_Automation\\abc.apk");
          capabilities= new DesiredCapabilities();
          capabilities.setCapability("browserName", "");
          capabilities.setCapability("deviceName","samsung-sm_n910g-641dd802");
          capabilities.setCapability("platformVersion","5.0.1");
          capabilities.setCapability("platformName","Android");
          capabilities.setCapability("app",app.getAbsolutePath());
          capabilities.setCapability("apppackage","com.sk.test");
          capabilities.setCapability("appActivity","com.fp.test.test");
          dr = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
          dr.manage().timeouts().implicitlyWait(60,TimeUnit.SECONDS);
      
      
      }   
      

      公共类Test2 {

      @Test
      public void method1() throws MalformedURLException, InterruptedException {
      
      
      
          //Few line Code
      
      
      }
      

      公共类Test3 {

      @Test
      public void method1() throws MalformedURLException, InterruptedException {
      
      
          //Few line Code
      
      }   
      

      第一次,我运行 2 个类(Test1 和 Test2),它完美地运行并完成了套件。脚本状态为通过。

      第二次或运行第二个套件,我想运行 Test3 类,因此它需要运行“Test1”类,但我希望应用程序不应该重新启动,它应该与先前打开的活动一起进入前台。

      请告诉我在第 2 次运行时应在 Class Test1 中进行哪些更改或需要对 appium settimng 进行任何更改。我正在使用“不重置”选项

      【讨论】:

        【解决方案4】:
        capabilities.setCapability("appActivity","com.fp.test.test");
        

        这是由于每次您使用此活动启动应用程序时发生的,并且概率就像这是您的应用程序的第一个活动(登录屏幕),每当您请求应用程序时,它将打开登录屏幕以尝试查找在第一次/登录活动之后您可以使用此应用程序的活动'https://play.google.com/store/apps/details?id=com.intelloware.apkinfo&hl=en'

        【讨论】:

          猜你喜欢
          • 2021-02-05
          • 2017-01-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-05
          • 2012-04-21
          • 2023-03-17
          • 1970-01-01
          相关资源
          最近更新 更多