我嘗試使用Appium自動執行原生android應用程序的測試。我想測試的功能是,應用程序的某些用戶設置(例如,最喜歡的搜索結果)可以在更新到更新版本的應用程序後保留。我有兩個版本的應用程序,並手動測試此功能的作品。但是當我自動化測試時,所有的設置都被清除/重置。Appium Android自動化:如何在保留plist文件的情況下重新安裝應用程序
我的自動化分兩步完成。首先,在一個會話中,安裝舊版本,並設置收藏夾設置;其次,開始新的會話,安裝新版本。
第一步工作正常。在我的第二個步驟
- 如果我開始新的會話之前設置
full reset
我的能力,應用程序被重新安裝新版本,但所有的設置將被清除。 - 如果我在開始新會話之前將
no reset
設置爲我的能力,那麼我發現應用程序不會隨新版本重新安裝。
我應該如何設置appium服務器標誌,以便在第二步中,我可以在保持設置的同時安裝新版本?我猜這與應用程序的plist文件有關?
這是我的代碼。 settingOldVersion.java
package RR.upgradeTest;
import java.io.File;
import java.net.URL;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import RR.utility.RRhelper;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileCapabilityType;
import io.appium.java_client.remote.MobilePlatform;
public class settingOldVersion{
public static AndroidDriver DRIVER;
public static String APK_file = "oldversion.apk";
@BeforeClass
public static void setUpBeforeClass() throws Exception {
File appDir = new File("src");
File app = new File(appDir, APK_file);
DesiredCapabilities cap=new DesiredCapabilities();
cap.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID);
cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
cap.setCapability(MobileCapabilityType.PLATFORM_VERSION, "5.0.1");
cap.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
System.out.println("\n\n******************************************************");
System.out.println("Installation and startup app "+APK_file);
//Android Driver
DRIVER=new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);
System.out.println("Driver obtained");
Thread.sleep(2000);
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
DRIVER.quit();
}
@Test
public void settingFavorite() throws Exception
{
System.out.println("setting favorite");
//Add search result into favorite
....
//Take a screenshot of the favorite page
....
String image_path=".//result//UpgradeTest/OldVersion//";
String name="FavoriteSetting"+APK_file;
RRhelper.takeScreenshot(DRIVER, name, image_path);
}
}
這裏是我的檢查新版本代碼:verifyNewVersion.java
package RR.upgradeTest;
import java.io.File;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.List;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import RR.utility.RRhelper;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileCapabilityType;
import io.appium.java_client.remote.MobilePlatform;
public class varifyNewVersion{
public static AndroidDriver DRIVER;
public static String APK_file = "newversion.apk";
@BeforeClass
public static void setUpBeforeClass() throws Exception {
File appDir = new File("src");
File app = new File(appDir, APK_file);
DesiredCapabilities cap=new DesiredCapabilities();
cap.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID);
cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
cap.setCapability(MobileCapabilityType.PLATFORM_VERSION, "5.0.1");
cap.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
// cap.setCapability("fullReset", true);
// cap.setCapability("noReset", false);
System.out.println("\n\n******************************************************");
System.out.println("Installation and startup app "+app.getAbsolutePath());
//Android Driver
DRIVER=new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);
System.out.println("Driver obtained");
Thread.sleep(2000);
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
DRIVER.quit();
}
@Test
public void checkingFavorite() throws Exception
{
//Come to Favorite page
Assert.assertTrue(RRhelper.ComeToMenuItem(DRIVER, "Favoritter"));
Thread.sleep(300);
String image_path=".//result//UpgradeTest/NewVersion//";
String name="FavoriteSetting_"+APK_file;
RRhelper.takeScreenshot(DRIVER, name, image_path);
....
}
}
謝謝你回覆!是的,我希望用戶在升級到新版本應用程序時保持註冊。測試環境中的問題是我們正在使用hockeyapp來託管測試版apk,並且存在hockyapp的錯誤,我們無法使用鏈接從hockeyapp上的新版本更新應用程序。你能指定更多關於如何「從使用deviceID的應用程序同步到」更新應用程序?它可以從Appium完成嗎? – Chao