使用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 在 .testOpenMainActivity(MyActivityTest 的.java:31) at java.lang.reflect.Method.invokeNative(Native Method) 在com.android.uiautomator.testrunner.UiAutomatorTestRunner.start(UiAutomatorTestRunner.java) :124) 在com.android.uiautomator.testrunner.UiAutomatorTestRunner.run(UiAutomatorTestRunner.java:8 5) 在com.android.commands.uiautomator.RunTestCommand.run(RunTestCommand.java:76) 在com.android.commands.uiautomator.Launcher.main(Launcher.java:83) at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 在com.android.internal.os.RuntimeInit.main(RuntimeInit.java:235) 在dalvik.system.NativeStart.main(本地方法)
答案 0 :(得分:2)
您需要Android 4.2设备或更高版本才能以此方式截取屏幕截图。
这是因为在调用目标时,在Android 4.2或API Level 17中添加了takeScreenshot
方法。
当您在本地计算机上编译时,您针对包含此方法的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