Android Uiautomator“;“上午开始”;

Android Uiautomator“;“上午开始”;,android,android-uiautomator,Android,Android Uiautomator,有人知道怎么打电话吗 am启动-来自uiautomatorcode的活动。 或者可以从junit开始活动。下面是一个从.jar文件开始活动的示例: private boolean startSettings() { try { Runtime.getRuntime().exec( "am start -n com.android.settings/.Settings"); sleep(1000); } catch (

有人知道怎么打电话吗
am启动-来自
uiautomator
code的活动。

或者可以从junit开始活动。

下面是一个从.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;
}
私有布尔起始设置(){
试一试{
Runtime.getRuntime().exec(
“am start-n com.android.settings/.settings”);
睡眠(1000);
}捕获(IOE异常){
e、 printStackTrace();
}
对于(int i=0;i<5;i++){
睡眠(1000);
如果(getUiDevice().getCurrentPackageName()包含(
“com.android.settings”)){
返回true;
}
}
返回false;
}

您可以修改代码以启动任何应用程序。您还可以通过为package/activity值添加一个参数来使该方法更通用。

我所做的是将启动应用程序和运行UIAutomator测试作为构建的一部分。这就是我在构建Ant build.xml之后运行UIAutomator测试的方式。此代码段将添加到build.xml的末尾,并启动应用程序,然后启动UI测试。使用eclipse确保右键单击build.xml,然后->运行方式->Ant构建。。。并确保选择了正确的目标:“构建”、“安装”、“启动”、“mytest”。目标“start”和“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>

开始导航示例
运行UI测试

它应具有以下代码。我在考试中用这个

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);

我已尝试am start-n
com.app.myapp/.main活动
不工作。完全限定名也不起作用。但是在命令提示符下,我不知道为什么会发生这种情况。我定义了一个启动应用程序的方法,我使用了上面的代码,没有任何问题。您可以尝试使用uiautomator的python版本:我已经使用了一段时间,效果非常好。然后可以使用python subprocess.Popen()运行“adb shell am start”命令。