刚开始在一部手机上用uiautomator跑用例,所以只是简单的使用了new UiObject(new UiSelector().text("app名字")).click(); 来启动app的,后因为启动后的用例出了些问题,想用其他手机测试时才发现靠这种方法只能适用一款手机,于是就开始百度,百度大多说可以使用RunTime().getRunTime().exec("adb shell am -w 包名/.类名");去开启app,但小白也不清楚因为什么原因,试了好多次,这种方式在小白这里并不适用,几经辗转,从github上找到了可以在不同手机启动app的方法:
private UiDevice mDevice;
private static final int LAUNCH_TIMEOUT=7000;
private static final String packageName="org.txst.tst";
@Test
public void startapp() throws UiObjectNotFoundException{
final String launcherPackage=mDevice.getLauncherPackageName();
assertThat(launcherPackage,notNullValue());
mDevice.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)),LAUNCH_TIMEOUT);
Context context=InstrumentationRegistry.getContext();
final Intent intent=context.getPackageManager().getLaunchIntentForPackage(packageName);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent);
mDevice.wait(Until.hasObject(By.pkg(packageName).depth(0)),LAUNCH_TIMEOUT);
}
所以将此记录下来,如还有其他好建议的小伙伴可以评论告诉小白。