【问题标题】:uiAutomator failing on 4.1.2 deviceuiAutomator 在 4.1.2 设备上失败
【发布时间】:2014-08-01 20:09:18
【问题描述】:

在使用 Android uiAutomator 时,我在尝试在 4.1.2 设备上运行测试时遇到了问题。 使用 enter link description here 中的代码时,尝试滚动应用程序托盘时会引发异常。

我最初认为这是由于针对 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] 在 junit.framework.TestCase.runTest(TestCase.java:168) [exec] 在 junit.framework.TestCase.runBare(TestCase.java:134) [exec] 在 junit.framework.TestResult$1.protect(TestResult.java:115) [exec] 在 junit.framework.TestResult.runProtected(TestResult.java:133) [exec] 在 junit.framework.TestResult.run(TestResult.java:118) [exec] 在 junit.framework.TestCase.run(TestCase.java:124) [exec] 在 com.android.uiautomator.testrunner.UiAutomatorTestRunner.start(UiAutomatorTestRunner.java:124) [执行] 在 com.android.uiautomator.testrunner.UiAutomatorTestRunner.run(UiAutomatorTestRunner.java:85) [exec] 在 com.android.commands.uiautomator.RunTestCommand.run(RunTestCommand.java:76) [执行] 在 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] 在 com.example.Runner.launchAppFromHomeScreen(Test.java:45) [执行] ... 19 更多

【问题讨论】:

    标签: android ui-automation android-uiautomator


    【解决方案1】:

    UIAutomator 的代码有变化:

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

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

    【讨论】:

    • 这很奇怪,我通过使用正确的 UIAutomator.jar 解决了这个问题。
    • 这个解决方案对我有用。我的目标是 android-16,我的设备是 4.2.2。将目标更改为 android-17 后,它工作正常。
    • @MrChaz 你在重试之前做了蚂蚁清洁吗?这让我明白了。
    • 我尝试清理和构建,但仍然发现此错误。我发现我的 project.properties 仍然将目标设置为 17,而我正在部署的手机是目标 16。将 project.properties 更改为 16 后一切正常。
    • @Aria4Larry 哇...您在哪里找到了基于 API 版本的不同代码更改。 UiAutomator 是开源的吗?
    【解决方案2】:

    从我本周对 UI Automator 的实验来看,它似乎仍然不成熟,最好的支持是 android-17 作为您的目标并使用运行 4.2.1 的设备。我尝试使用安装了 4.1.2 的 Galaxy S 设备,并遇到与您报告的错误类似的错误。

    仅供参考:我认为 Android 4.2.2 中有一个错误会阻止 scrollIntoView(...) 调用多次滑动。我已将问题报告给 Google https://groups.google.com/forum/?fromgroups=#!topic/adt-dev/TjeewtpNWf8

    我发现演示应用 http://developer.android.com/tools/testing/testing_ui.html 在我的 Android 4.2.1 设备上运行您可能需要稍微调整代码,但方法调用确实有效。

    【讨论】:

    • 很高兴知道这不仅仅是我。我认为他们在两个版本之间进行了一些更改。
    • 为此干杯。我在 KitKat 上仍然存在刷卡问题,以 Google ui 测试页面上的示例为例。它进入应用程序屏幕,尝试向左滑动,然后尝试向右滑动,然后说找不到“设置”应用程序,尽管我手机上的设置应用程序位于第三个页面(它永远不会到达)。
    • @JulianHarty 嗨 Julian,你是否放弃了 uiautomator 并转而使用 Espresso?
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多