• SDK 测试小结 at 2017年05月12日

    请问下 SDK 要自己写界面去测试么?

  • 您好,我在代码里面使用了 spoon 截图,但是运行后提示 java.lang.RuntimeException: Unable to capture screenshot.请问这是为什么呢,我有添加了文件读取权限的

  • 但是它的 index=0 耶

  • 但是我从最外层数到我要的那一层,执行定位又会报错,我也不明白是为什么?

  • 不知道是不是因为元素包含太多的原因,也有可能因为界面同类名的元素很多,所以就都跑到其他地方去了

  • 直接定位也定不到😟 😟

  • @Lihuazhang 样式已修改,请审核!

  • 03-03 14:22:47.295 10440-10457/? I/QueryController: Matched selector: UiSelector[CLASS=android.widget.LinearLayout, INSTANCE=1, COUNT=1] <<==>> [android.view.accessibility.AccessibilityNodeInfo@800785cd; boundsInParent: Rect(0, 0 - 2048, 1486); boundsInScreen: Rect(0, 50 - 2048, 1536); packageName: xx.xxx.xxxx; className: android.widget.LinearLayout; text: null; error: null; maxTextLength: -1; contentDescription: null; viewIdResName: null; checkable: false; checked: false; focusable: false; focused: false; selected: false; clickable: false; longClickable: false; enabled: true; password: false; scrollable: false; actions: [AccessibilityAction: ACTION_SELECT - null, AccessibilityAction: ACTION_CLEAR_SELECTION - null, AccessibilityAction: ACTION_ACCESSIBILITY_FOCUS - null]]
    打印出来的父节点也不是自己要的,通过 boundsInScreen: Rect(0, 50 - 2048, 1536) 就知道点去其他地方了,但是我就算从外层的那个 Framelaout 开始获取,获取到最后的那个节点,也不是我自己要的

  • 哇,又涨知识了,这个是可以整合跟 Uiautomator 一起用么?用这个来做截图整合出报告很直接呀!

  • 懂了,非常感谢💕

  • 嗯,因为有时候运行看不到操作记录,我现在遇到个元素,看似找到了,但实际没有点击到

  • 有 report 了,但是 report 里面只有每个 case 执行的时间、是否成功,没有操作的具体内容是么?

  • 我直接选择要执行的类,然后右键的

  • 你好,我在 build.gradle 文件中添加了
    testOptions{
    reportDir="$project.buildDir"
    }
    但是运行用例后还是没有出 report,是因为什么呢?

  • 有更详细点的描述么?

  • 是 2.0 的,但执行后报告保存在哪呢?

  • 找到问题了,没有赋予权限问题
    只要在 Androidmanifest.xml 文件的 manifest 节点下添加文件读取写入权限即可!


  • 执行 takeScreenshot 返回结果 false,手机系统是 4.4.4 的,我换到 6.0 系统都不行

  • #7 楼 @264768502 估计小米、魅族这些就会有

  • #4 楼 @264768502 好像还跟机器有关,我用小米就一定要先启动 app 后才能调出来,换一台 htc 就不用

  • #4 楼 @264768502 如果不启动 app 执行,后台输出这个 log
    No JSBridge.
    java.lang.ClassNotFoundException: android.support.test.espresso.web.bridge.JavaScriptBridge
    at java.lang.Class.classForName(Native Method)
    at java.lang.Class.forName(Class.java:324)
    at java.lang.Class.forName(Class.java:285)
    at android.support.test.runner.MonitoringInstrumentation.tryLoadingJsBridge(MonitoringInstrumentation.java:612)
    at android.support.test.runner.MonitoringInstrumentation.access$100(MonitoringInstrumentation.java:88)
    at android.support.test.runner.MonitoringInstrumentation$3.run(MonitoringInstrumentation.java:223)
    at android.app.Instrumentation$SyncRunnable.run(Instrumentation.java:1904)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5441)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)
    Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.test.espresso.web.bridge.JavaScriptBridge" on path: DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/data/app/miu.qfdapptest.test-2/base.apk", zip file "/data/app/miu.qfdapptest-1/base.apk"],nativeLibraryDirectories=[/data/app/miu.qfdapptest.test-2/lib/arm64, /data/app/miu.qfdapptest-1/lib/arm64, /vendor/lib64, /system/lib64]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
    at java.lang.Class.classForName(Native Method) 
    at java.lang.Class.forName(Class.java:324) 
    at java.lang.Class.forName(Class.java:285) 
    at android.support.test.runner.MonitoringInstrumentation.tryLoadingJsBridge(MonitoringInstrumentation.java:612) 
    at android.support.test.runner.MonitoringInstrumentation.access$100(MonitoringInstrumentation.java:88) 
    at android.support.test.runner.MonitoringInstrumentation$3.run(MonitoringInstrumentation.java:223) 
    at android.app.Instrumentation$SyncRunnable.run(Instrumentation.java:1904) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5441) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628) 
    Suppressed: java.lang.ClassNotFoundException: android.support.test.espresso.web.bridge.JavaScriptBridge
    at java.lang.Class.classForName(Native Method)
    at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
    at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
    ... 15 more

  • #1 楼 @264768502 你好,用这个方法是不是 app 一定要有在后台运行?我在后台杀死进程后,执行脚本,没报错,但 app 也没启动起来

  • 楼主,直接调用 activity 命令需要在 root 过的手机中才能运行么?

  • 楼主对于监控网络机制的,有没有什么好的解决办法呢?

  • uiautomator2.0 用 as 运行出错 at 2017年02月20日

    哈,我之前就是这么写的,一开始运行的过,后面发现不行了,建议是放在 androidTest 类下面,引入对应的库要用 androidTestCompile 这样才行