@qinggchu 先谢谢啊~
这个我前面已经试过了,我一直都是写在 SDCARD 目录下的。目录权限改的是 777,在 4.4 以后还是没法操作的。
这个问题是这样的,我个人是这么理解,在其他 APP 中调用 UIAUTOMATOR 本身就是一个安全隐患。这样就可以利用此操作嵌入其他 APK,获取数据。4.4 版本后该命令重构过,应该是对该命令加入了权限管理,API 只提供了一个调用 UIAUTOMATOR 实例的方法。这也就造成了在 4.4 下使用该方法,只返回 PID,但是看不到实际进程,没有任何报错,但就是不写文件的现状~
当然这是我根据自己环境和操作后的总结,如果有兴趣的话,你可以试试 4.4 以上的能不能操作。~
支持!JS 还是菜鸟,后面再参与,先占个坑!~
用例继承的 ActivityInstrumentationTestCase2
继承关系:
↳ android.test.InstrumentationTestCase
↳ android.test.ActivityTestCase
↳ android.test.ActivityInstrumentationTestCase2
public Instrumentation getInstrumentation ()
Added in API level 1Inheritors can access the instrumentation using this.
ROBOTIUM 单 ACTIVITY 实际上还是调的 instrumentation 的吧。
通过 launchActivity (String pkg, Class activityCls, Bundle extras) 进行第一次加载的吧?
这个类继承于 JUNIT,JUNIT 通过 setup 和 teardown 进行初始化。
我在网上搜到的结果都是说 TEARDOWN 执行完之后,必须回到初始界面,才能执行下一条用例,方法就是用 SOLO.FINISHOPENEDACTIVITIES,但是没说为什么不回到主界面就会阻塞啊?看 LOG 啥也没有么。。。。有没有大神以前遇到过,解答一下原理啊?
就在想有没有办法绕过去啊。~
@monkey 呃。。。谢谢 MONKEY 提醒啊。我还真当成一个东西了。。。。我再看看。。。
呵呵,谢谢各位大侠的建议了哈~后面还有很多的路要走,很多的坑要填~
其实吧,我感觉自己的心态和恒温差不多。。。娃多了个,压力还是相当大的~远没有那么平和。。。
很多压力吧,你再急也是急不来的。。。来我们这论坛的应该有很多都是希望改变的吧。
个人觉得改变是需要时间的,太着急,走了太多捷径后,知识的积累可能也会有问题。
填过的坑越多,学到也越多。~大家共勉之~
@link1220 TCL 是我目前见过的最难写得语言,真心不高兴用。。。~~~有点就是正则确实做得不错。。。
@xiaoxiaoimg 不是。应该是需要下载 NODE.JS 安装包,安装。
你去网上找个教程,BLOG 写得很清楚,一步一步看吧。
@xiaoxiaoimg NODE.JS 装了没啊?
感谢楼上诸位大侠分享的 CPU,内存基础知识和绘图方法!~
@testly 我不是说我哦~不用和我抱歉了哈。
我是说你 @ 恒温~提个建议罢了。~我还没碰过 IOS 的说。。。
提问的艺术。~
在这需要初步的问题定位。
你贴一串找人给你定位,谁有空看啊。~还是心情不好的时候。。。。
@vigossjjj @squallff
谢谢两位的建议~正在补 JAVASCRIPT 的基本知识,准备学习一下 APPIUM 的插桩思想。
目前的想法是能用原生的 INSTRUMENTS 的架构的就用原生的,跨进程麻烦的再考虑 APPIUM。
应用需要调系统的音视频播放器,ROBOTIUM 插桩的话,播放器不同的话,成本太高,目前就这块还在用 APPIUM 实现。
多谢!~
赞!很实用~
众筹 +1
@xiaorudk
帅哥,学习一下啊。ALERT 的 UI 是可以用 APPIUM 定位的吧?
你这么做是想在弹出 ALERT 后做什么,实现什么呢?~有什么内容外部代码不能处理的么?
看一下 SOLO 的 API。
android.view.View getView(String id, int index)
Returns a View matching the specified resource id and index.
元素个数及索引可以取 GRIDVIEW 的 COUNT 来计数。
@qinggchu 谢谢回复啊~
我用 RUNTIME.EXEC 延时到 100S 在 SDCARD 都没有取到。RUNTIME 操作没有返回出错,返回的 LOG 最后就是没有写文件这一步。感觉应该和 APK 的系统权限有关系。
从理论上看,如果能先把 UIAUTOMATOR 进程起来,就能解决了。UIAUTOMATOR 的进程没有起来。我回头再看看有没有办法在 APK 里面用命令起进程。
不知道这个区别是不是和 API 的版本有关,我用的是 API19 的。UIAUTOMATOR 今天有大神不是说 ANDROID 4,4 重新封装过,你用的是哪个版本的 API?
呵呵,我最近正好事不多,学点新的填填以前的坑。不行还是回去老老实实用 APPIUM 做跨进程了~。
@seveniruby 感谢思寒,呵呵,是我肤浅了,把问题想的太简单了。。。
不过这次填这坑,也算是熟悉了一下 RUNTIME 机制和 ANDROID 简单的 SHELL 了。
后面去学习一下 CAFE 的框架。~
顺带感慨下,还有好多深坑不会啊,如 HTML,JS。再次感谢两位大侠。~
@seveniruby @xuxu
谢谢两位大侠了,不得不暂时放弃尝试使用该方法在 ROBOTIUM 架构内部来做跨进程了。
反馈一下当下的进展吧:
1.目前用 RUNTIME.EXEC 的返回的 PS 结果是 9。不是 0。
PROCESS 的 WAITFOR 的返回值解释是:the exit value of the native process being waited on。PS 就没看到 PID=9 的进程。。。。
2.将目的路劲放到了 SD 卡里,SD 卡的读写权限我开了,还是不行。
暂时没招了。系统权限的水现在对我来说还是太深了。~
@xuxu
好像是我理解错了。。。。SHELL 应该是一样的吧?
这里有什么文件系统权限的坑么?直接 ADB 命令和 ROBOTIUM 调用有啥区别么?
麻烦大侠了~
@xuxu 谢谢啊,ls 命令是搞定了。
不过下面这个命令,执行后没有生成
ShellUtils.shell("uiautomator dump /data/local/tmp/uidump2.xml");一直都没有对应的文件啊。
这块以前没有接触过,按照大侠你的说法,uiautomator dump 这种用法是 ADB SHELL 才支持,在 INSTRUMENTATION 架构下实际上是不支持的?
呵呵,大侠我主要是想通过你的接口绕进程。关键是上面这个命令。~
@qinggchu @seveniruby
谢谢两位,谢谢 qinggchu 的分享。我再仔细看看 UIAUTOMATOR 的绕法和 XUXU 的接口吧~还是优先选择 ROBOTIUM 吧。我还需要第三方控件的 TEXT,控件大小等属性,UIAUTOMATOR 应该能取到,取到了再来分享~
后面还要玩 IOS 的,IOS 的还没有概念。。。