0

在使用 UiautomatorTestcase 类捕获我的主要活动的屏幕截图时,我面临以下异常。

我正在使用的示例代码

public class MyActivityTest extends UiAutomatorTestCase {

    public UiautomatorAdaptxt() {
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void setUp() throws Exception {
        // TODO Auto-generated method stub
        super.setUp();

    }

    public void testOpenMainActivity() throws UiObjectNotFoundException {
        -->Here I use the code to open my Activity<--
        getUiDevice().takeScreenshot(storePath);
    }
}

我面临的例外是

java.lang.NoSuchMethodError:com.android.uiautomator.core.UiDevice.takeScreenshot at .testOpenMainActivity(MyActivityTest .java:31) at java.lang.reflect.Method.invokeNative(Native Method) at com.android.uiautomator.testrunner。 UiAutomatorTestRunner.start(UiAutomatorTestRunner.java :124) at com.android.uiautomator.testrunner.UiAutomatorTestRunner.run(UiAutomatorTestRunner.java:8 5) at com.android.commands.uiautomator.RunTestCommand.run(RunTestCommand.java:76) at com.android.commands.uiautomator.Launcher.main(Launcher.java:83) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java :235) 在 dalvik.system.NativeStart.main(Native Method)

4

1 回答 1

2

您需要 Android 4.2 或更高版本的设备才能以这种方式截取屏幕截图。

这是因为该takeScreenshot方法是在 Android 4.2 或 API 级别 17 中添加为调用目标的。

官方文档

发生的情况是,当您在本地计算机上编译时,您针对包含此方法的 android-17 或更高版本进行编译,因此编译成功。但是,当部署在 android-16 的目标 android 设备上时,缺少此方法。当测试代码尝试调用此方法时,它会引发NoSuchMethodError异常。

作为一种解决方法,您可以像这样使用 adb 截屏

adb shell screencap -p /data/local/tmp/screen-capture.png
adb pull /data/local/tmp/screen-capture.png <localfile.png>
adb shell rm /data/local/tmp/screen-capture.png
于 2013-07-28T19:41:22.733 回答