2013-07-30 1 views
3

Все тело знают, как позвонить в
am start -a ACTIVITY от uiautomator код.
Или можно начать деятельность с junit.Uiautomator "am start"

ответ

5

Вот пример я использую, чтобы начать деятельность из .jar файла:

private boolean startSettings() { 
    try { 
     Runtime.getRuntime().exec(
       "am start -n com.android.settings/.Settings"); 
     sleep(1000); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    for (int i = 0; i < 5; i++) { 
     sleep(1000); 
     if (getUiDevice().getCurrentPackageName().contains(
       "com.android.settings")) { 
      return true; 
     } 
    } 
    return false; 
} 

Вы можете изменить код для запуска любого приложения. Вы также можете сделать метод более общим, добавив параметр для значения package/activity.

+0

Я попытался начать утра -n 'com.app.myapp/.MainActivity' Не работает. Полностью квалифицированное имя тоже не работает. но из командной строки 'adb shell am start -n com.app.myapp/.MainActivity' работает любые идеи? –

+0

Я понятия не имею, почему это происходит. Я определил метод для запуска приложения, и я использовал вышеописанный код без проблем. Вы можете попробовать использовать версию uiautomator на python: https: //github.com/xiaocong/uiautomator Я использовал его некоторое время, и он отлично работает. Затем вы можете использовать подпроцесс python.Popen() для запуска команды «запуск adb shell am start». –

0

Что я сделал, это сделать запуск приложения и запустить ваши тесты UIAutomator в сборке. Вот как я могу запустить тест UIAutomator после сборки Ant build.xml. Этот фрагмент добавляется в конец build.xml и заставляет ваше приложение запускаться, а затем запускает ваши тесты пользовательского интерфейса. Используя eclipse, убедитесь, что вы щелкните правой кнопкой мыши build.xml, затем -> Run As -> Ant Build ... и убедитесь, что выбраны правильные цели: 'build', 'install', 'start', 'mytest'. Целевые «старт» и «mytest» добавляются следующим фрагментом.

<!-- version-tag: VERSION_TAG --> 
<!-- This line should already be at the end of build.xml --> 
<import file="${sdk.dir}/tools/ant/uibuild.xml" /> 

<target name="start" description="Start App" depends="build, install"> 
    <echo>Starting Navigation Example</echo> 

    <exec executable="${adb}" failonerror="true"> 
     <arg value="shell" /> 
     <arg value="am" /> 
     <arg value="start" /> 
     <arg value="-n" /> 
     <arg value="com.example.android.navigationdrawerexample/.MainActivity" /> 
    </exec> 
</target> 

<target name="mytest" description="Runs UI tests" depends="build, install, start"> 
    <echo>Running UI Tests</echo> 
    <exec executable="${adb}" failonerror="true"> 
     <arg value="shell" /> 
     <arg value="uiautomator" /> 
     <arg value="runtest" /> 
     <arg value="${out.filename}" /> 
     <arg value="-c" /> 
     <arg value="com.example.android.navigationdrawerexample.MainTestCase" /> 
    </exec> 
</target> 
3

Он должен быть со следующим кодом. Я использую это в своем тесте.

UiDevice device = UiDevice.getInstance(getInstrumentation()); 
final String TARGET_PACKAGE = 
     InstrumentationRegistry.getTargetContext().getPackageName(); 

Context context = InstrumentationRegistry.getContext(); 
final Intent intent = context.getPackageManager().getLaunchIntentForPackage(TARGET_PACKAGE); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
context.startActivity(intent); 
device.wait(Until.hasObject(By.pkg(TARGET_PACKAGE).depth(0)), 5000); 

 Смежные вопросы

  • Нет связанных вопросов^_^