请问下 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 过的手机中才能运行么?
楼主对于监控网络机制的,有没有什么好的解决办法呢?
哈,我之前就是这么写的,一开始运行的过,后面发现不行了,建议是放在 androidTest 类下面,引入对应的库要用 androidTestCompile 这样才行