Appium移動端UI自動化中,如果需要兩個APP交互操作的實踐經驗


前段時間在用Appium做UI自動化,碰到一個原來沒有碰到的問題,原來做的項目都是單獨的APP操作。

在目前的項目中,有兩個APP,兩個APP需要交互操作,一個發單,一個接單,這邊發單以后,另外個APP需要接單。

想了兩種方法:

一、Two App in one device 兩個app在同一個設備上運行

  1.啟動device,安裝一個app

@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

	  //安裝貨主端
	  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

	  //切換到貨主端
	  driver.startActivity("com.kuaihuoyun.freight", ".KDLaunch");

二、two devices two apps 兩個設備,每個設備單獨一個app

 

	  //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的方式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM