Appium移动端UI自动化中,如果需要两个APP交互操作的实践经验

转载至:http://www.cnblogs.com/appstest/p/5088877.html

前段时间在用Appium做UI自动化,碰到一个原来没有碰到的问题,原来做的项目都是单独的APP操作。

在目前的项目中,有两个APP,两个APP需要交互操作,一个发单,一个接单,这边发单以后,另外个APP需要接单。

想了两种方法:

一、Two App in one device 两个app在同一个设备上运行

  1.启动device,安装一个app

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 @BeforeTest    public  void  beforeTest()  throws  Exception{        logger.info( "***********************************************************************" );        logger.info( "Test begin:" );        logger.info( "发单接单,整车,测试" );                //获取app路径        File classpathRoot =  new  File(System.getProperty( "user.dir" ));        File appDir =  new  File(classpathRoot,  "apps" );        File app_carrier =  new  File(appDir,  "carrier.apk" );        File app_shipper =  new  File(appDir,  "shipper.apk" );        logger.info( "获取app path:" +app_carrier.getAbsolutePath());        //set up Appium        DesiredCapabilities capabilities1 =  new  DesiredCapabilities();        capabilities1.setCapability( "device" , "Android" );        capabilities1.setCapability(MobileCapabilityType.DEVICE_NAME,  "HC35NW906179" );        capabilities1.setCapability(MobileCapabilityType.UDID,  "HC35NW906179" );        capabilities1.setCapability(MobileCapabilityType.PLATFORM_VERSION,  "4.4.4" );        capabilities1.setCapability(MobileCapabilityType.APP, app_carrier.getAbsolutePath());        capabilities1.setCapability(MobileCapabilityType.APP_PACKAGE,  "com.kuaihuoyun.driver" );        capabilities1.setCapability(MobileCapabilityType.APP_ACTIVITY,  ".KDLaunch" );        //for input Chinese        capabilities1.setCapability( "unicodeKeyboard" "True" );         capabilities1.setCapability( "resetKeyboard" "True" );        try  {            driver =  new  AndroidDriver<>( new  URL( "http://127.0.0.1:4723/wd/hub" ), capabilities1);          logger.info( "carrier app启动成功" );      catch  (MalformedURLException e) {          // TODO Auto-generated catch block          e.printStackTrace();      }

  2.安装另外一个app

1 2 3 4 5 6 7 8 9 //安装货主端 driver.installApp(app_shipper.getAbsolutePath()); logger.info(app_shipper.getAbsolutePath()); if (driver.isAppInstalled( "com.kuaihuoyun.freight" )== true ){      logger.info( "货主端安装成功" ); } else {      logger.info( "货主端安装失败" );         }

  3.操作时通过startActivity切换不同app

1 2 //切换到货主端 driver.startActivity( "com.kuaihuoyun.freight" ".KDLaunch" );

二、two devices two apps 两个设备,每个设备单独一个app

 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42    //set up Appium      //司机端    DesiredCapabilities capabilities1 =  new  DesiredCapabilities();    capabilities1.setCapability( "device" , "Android" );    capabilities1.setCapability(MobileCapabilityType.DEVICE_NAME,  "7N2MYN14BK036952" );    capabilities1.setCapability(MobileCapabilityType.UDID,  "7N2MYN14BK036952" );    capabilities1.setCapability(MobileCapabilityType.PLATFORM_VERSION,  "4.4.3" );    capabilities1.setCapability(MobileCapabilityType.APP, app_carrier.getAbsolutePath());    capabilities1.setCapability(MobileCapabilityType.APP_PACKAGE,  "com.kuaihuoyun.driver" );    capabilities1.setCapability(MobileCapabilityType.APP_ACTIVITY,  ".KDLaunch" );    //for input Chinese    capabilities1.setCapability( "unicodeKeyboard" "True" );     capabilities1.setCapability( "resetKeyboard" "True" );        try  {        driver__carrier =  new  AndroidDriver<>( new  URL( "http://127.0.0.1:4723/wd/hub" ), capabilities1);      logger.info( "carrier app启动成功" ); catch  (MalformedURLException e) {      // TODO Auto-generated catch block      e.printStackTrace(); }          //货主端    DesiredCapabilities capabilities2 =  new  DesiredCapabilities();    capabilities2.setCapability( "device" , "Android" );    capabilities2.setCapability(MobileCapabilityType.DEVICE_NAME,  "HC35NW906179" );    capabilities2.setCapability(MobileCapabilityType.UDID,  "HC35NW906179" );    capabilities2.setCapability(MobileCapabilityType.PLATFORM_VERSION,  "4.4.4" );    capabilities2.setCapability(MobileCapabilityType.APP, app_shipper.getAbsolutePath());    capabilities2.setCapability(MobileCapabilityType.APP_PACKAGE,  "com.kuaihuoyun.freight" );    capabilities2.setCapability(MobileCapabilityType.APP_ACTIVITY,  ".KDLaunch" );    //for input Chinese    capabilities2.setCapability( "unicodeKeyboard" "True" );     capabilities2.setCapability( "resetKeyboard" "True" );    try  {        driver__shipper =  new  AndroidDriver<>( new  URL( "http://127.0.0.1:4725/wd/hub" ), capabilities2);      logger.info( "shipper app启动成功" ); catch  (MalformedURLException e) {      // TODO Auto-generated catch block      e.printStackTrace(); }

  启动两个appium代理,设置不同port,在不同设备中安装不同app

 

总结:Two App in one device的方式运行起来不是很稳定,目前采用two devices two apps的方式


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部