4

在使用 Android uiAutomator 时,我在尝试在 4.1.2 设备上运行测试时遇到了问题。使用此处输入链接描述中的代码时,尝试滚动应用程序托盘时会引发异常。

我最初认为它是由 api 17 而不是 16 编译引起的,但这似乎不是真的。其他人遇到过这个吗?

引发异常:

[exec] java.lang.reflect.InvocationTargetException [exec] 在 java.lang.reflect.Method.invokeNative(Native Method) [exec] 在 java.lang.reflect.Method.invoke(Method.java:511) [exec]在 com.example.runTests(Runner.java:124) [exec] 在 com.example.testExecutor(Runner.java:60) [exec] 在 java.lang.reflect.Method.invokeNative(Native Method) [exec] 在java.lang.reflect.Method.invoke(Method.java:511) [exec] at junit.framework.TestCase.runTest(TestCase.java:168) [exec] at junit.framework.TestCase.runBare(TestCase.java: 134) [exec] at junit.framework.TestResult$1.protect(TestResult.java:115) [exec] at junit.framework.TestResult.runProtected(TestResult.java:133) [exec] at junit.framework.TestResult.run (TestResult.java:118) [exec] at junit.framework.TestCase.run(TestCase.java:124) [exec] at com.android.uiautomator.testrunner.UiAutomatorTestRunner.start(UiAutomatorTestRunner.java:124) [exec] at com.android.uiautomator.testrunner.UiAutomatorTestRunner.run(UiAutomatorTestRunner.java:85) [exec] at com.android.commands.uiautomator.RunTestCommand.run(RunTestCommand.java:76) [exec] 在 com.android.commands.uiautomator.Launcher.main(Launcher.java:83) [exec] 在 com.android.internal。 os.RuntimeInit.nativeFinishInit(Native Method) [exec] at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:235) [exec] at dalvik.system.NativeStart.main(Native Method) [exec] 引起作者:java.lang.NoSuchMethodError: com.android.uiautomator.core.UiScrollable.setAsHorizo​​ntalList [exec] at com.example.Runner.launchAppFromHomeScreen(Test.java:45) [exec] ... 还有 19 个testrunner.UiAutomatorTestRunner.start(UiAutomatorTestRunner.java:124) [exec] at com.android.uiautomator.testrunner.UiAutomatorTestRunner.run(UiAutomatorTestRunner.java:85) [exec] at com.android.commands.uiautomator.RunTestCommand.run( RunTestCommand.java:76) [exec] 在 com.android.commands.uiautomator.Launcher.main(Launcher.java:83) [exec] 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) [exec]在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:235) [exec] 在 dalvik.system.NativeStart.main(Native Method) [exec] 引起:java.lang.NoSuchMethodError: com.android。 uiautomator.core.UiScrollable.setAsHorizo​​ntalList [exec] at com.example.Runner.launchAppFromHomeScreen(Test.java:45) [exec] ... 还有 19 个testrunner.UiAutomatorTestRunner.start(UiAutomatorTestRunner.java:124) [exec] at com.android.uiautomator.testrunner.UiAutomatorTestRunner.run(UiAutomatorTestRunner.java:85) [exec] at com.android.commands.uiautomator.RunTestCommand.run( RunTestCommand.java:76) [exec] 在 com.android.commands.uiautomator.Launcher.main(Launcher.java:83) [exec] 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) [exec]在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:235) [exec] 在 dalvik.system.NativeStart.main(Native Method) [exec] 引起:java.lang.NoSuchMethodError: com.android。 uiautomator.core.UiScrollable.setAsHorizo​​ntalList [exec] at com.example.Runner.launchAppFromHomeScreen(Test.java:45) [exec] ... 还有 19 个124) [exec] at com.android.uiautomator.testrunner.UiAutomatorTestRunner.run(UiAutomatorTestRunner.java:85) [exec] at com.android.commands.uiautomator.RunTestCommand.run(RunTestCommand.java:76) [exec] at com.android.commands.uiautomator.Launcher.main(Launcher.java:83) [exec] 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) [exec] 在 com.android.internal.os.RuntimeInit .main(RuntimeInit.java:235) [exec] at dalvik.system.NativeStart.main(Native Method) [exec] 原因:java.lang.NoSuchMethodError: com.android.uiautomator.core.UiScrollable.setAsHorizo​​ntalList [exec]在 com.example.Runner.launchAppFromHomeScreen(Test.java:45) [exec] ... 还有 19 个124) [exec] at com.android.uiautomator.testrunner.UiAutomatorTestRunner.run(UiAutomatorTestRunner.java:85) [exec] at com.android.commands.uiautomator.RunTestCommand.run(RunTestCommand.java:76) [exec] at com.android.commands.uiautomator.Launcher.main(Launcher.java:83) [exec] 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) [exec] 在 com.android.internal.os.RuntimeInit .main(RuntimeInit.java:235) [exec] at dalvik.system.NativeStart.main(Native Method) [exec] 原因:java.lang.NoSuchMethodError: com.android.uiautomator.core.UiScrollable.setAsHorizo​​ntalList [exec]在 com.example.Runner.launchAppFromHomeScreen(Test.java:45) [exec] ... 还有 19 个uiautomator.RunTestCommand.run(RunTestCommand.java:76) [exec] 在 com.android.commands.uiautomator.Launcher.main(Launcher.java:83) [exec] 在 com.android.internal.os.RuntimeInit.nativeFinishInit( Native Method) [exec] at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:235) [exec] at dalvik.system.NativeStart.main(Native Method) [exec] 原因:java.lang。 NoSuchMethodError: com.android.uiautomator.core.UiScrollable.setAsHorizo​​ntalList [exec] at com.example.Runner.launchAppFromHomeScreen(Test.java:45) [exec] ... 还有 19 个uiautomator.RunTestCommand.run(RunTestCommand.java:76) [exec] 在 com.android.commands.uiautomator.Launcher.main(Launcher.java:83) [exec] 在 com.android.internal.os.RuntimeInit.nativeFinishInit( Native Method) [exec] at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:235) [exec] at dalvik.system.NativeStart.main(Native Method) [exec] 原因:java.lang。 NoSuchMethodError: com.android.uiautomator.core.UiScrollable.setAsHorizo​​ntalList [exec] at com.example.Runner.launchAppFromHomeScreen(Test.java:45) [exec] ... 还有 19 个java:235) [exec] at dalvik.system.NativeStart.main(Native Method) [exec] 原因:java.lang.NoSuchMethodError: com.android.uiautomator.core.UiScrollable.setAsHorizo​​ntalList [exec] at com.example。 Runner.launchAppFromHomeScreen(Test.java:45) [exec] ... 19 更多java:235) [exec] at dalvik.system.NativeStart.main(Native Method) [exec] 原因:java.lang.NoSuchMethodError: com.android.uiautomator.core.UiScrollable.setAsHorizo​​ntalList [exec] at com.example。 Runner.launchAppFromHomeScreen(Test.java:45) [exec] ... 19 更多

4

3 回答 3

7

UIAutomator 的代码有变化:

4.1.1 method : public void setAsHorizontalList ()
4.2 method : public UIScrollable setAsHorizontalList ()

可能您正在使用 API-17 的 UIAutomator 构建测试,但在 API-16 设备上运行。尝试使用相应的 UIAutomator.jar

于 2013-03-12T08:56:50.280 回答
1

From my experiments this week with UI Automator it's still seems immature, with the best support available with android-17 as your target and with a device running 4.2.1. I tried using my Galaxy S device which has 4.1.2 installed and had similar errors to those you report.

FYI: I think there's a bug in Android 4.2.2 that stops scrollIntoView(...) calls from swiping more than once. I've reported the problem to Google https://groups.google.com/forum/?fromgroups=#!topic/adt-dev/TjeewtpNWf8

I found the demo app http://developer.android.com/tools/testing/testing_ui.html worked on my device with Android 4.2.1 You might need to tweak the code slightly, however the method calls do work.

于 2013-03-08T19:17:39.580 回答
0

您好,即使我遇到了同样的问题,首先我删除了我拥有的 build.xml 并创建了新的 build.xml 文件,然后运行 ​​ant build。它适用于我尝试相同的..

于 2014-07-23T11:09:51.913 回答