Cafe icon indicating copy to clipboard operation
Cafe copied to clipboard

【讨论】录制回放改进讨论帖

Open luxiaoyu opened this issue 11 years ago • 5 comments

有同学想写一个不需要keystore的录制回放工具,http://weibo.com/1907875417/AnpfUmmTB 我想了一下,应该可以实现(没实现过) 在有uiautomator的android版本上: 1.可以通过uiautomator获得当前所有可见UI的(x,y,w,h) 2.通过adb shell getevent获得当前操作的(x,y) 3.根据1、2的信息判断操作落在哪个控件上,这样就能做到控件级的录制回放了 但是如果是ListView类的操作不太好准确记录滑动的停止位置

在没有有uiautomator的android版本上: 可以利用android的签名检查漏洞将Cafe的录制回放的代码注入到dex中而不改变签名,详见http://blog.sina.com.cn/s/blog_be6dacae0101bmq3.html

luxiaoyu avatar Dec 17 '13 01:12 luxiaoyu

我是打算用uiautomator. 只能跑2.3而不能跑在4.1以上的app基本是没有的. 可以在4.1以上录制, 然后生成2.3上的插桩脚本.

uiautomator events 就可以获得控件级别的事件数据, 通过这个就可以直接实现自动化. 如果是结合appuim, 可以直接生成跨各种平台的自动化用例. 想做的更好, 需要深入去研究uiautomator的代码. 我才刚开始读.

我在testerhome上也开了讨论帖, 在征集意见. 打算用两天时间试试 http://www.testerhome.com/topics/296

seveniruby avatar Dec 17 '13 04:12 seveniruby

后来研究发现 events的数据还有限 可以在android uiautomator基础上做改进 我还在看具体的代码 感觉这个很稳定 只是对混合应用支持不行 我正在为appium增加支持 可以允许调用cafe的remote 有什么进展欢迎随时交流

seveniruby avatar Jan 13 '14 12:01 seveniruby

对webview的录制回放,cafe的解决方案是插入js监听UI事件,但是可惜做的不完善 appium调用cafe的remote是个好主意,可以把cafe当做一个后端工具service(只需要安装Cafe.apk,不需要cafe.jar),执行一些特定的权限动作,这样被测应用就不需要添加相应权限了。 调用方法是 /*

  • HOW TO CALL CAFE'S API FROM COMMAND LINE *
  • adb shell am startservice -a com.baidu.cafe.remote.action.name.COMMAND
  • -e function "waitforTopActivity" -e parameter "String:com.baidu.calculator2.Calculator,long:5000"
  • /dev/null;adb logcat -d | grep Arms */

后面的logcat是为了得到函数的返回值,比如一个string或者boolean

luxiaoyu avatar Jan 14 '14 07:01 luxiaoyu

appium是有pc端和手机端的 可以使用adb, 或者直接am执行也行. 我挺看好cafe的remote的, 我先按照你的用法设计. 不过我建议后续有可能, 可以考虑增加socketserver的方式来接受请求. 接受json请求, 返回json响应. 类似https://github.com/appium/appium/blob/master/lib/devices/android/bootstrap/src/io/appium/android/bootstrap/SocketServer.java 这样的架构更好看.

另外我看你的ppt里面介绍到root的漏洞利用, 这块你是怎么设计的. 直接用漏洞root系统吗. 现在实现了多少?

如果是基于adb, 就没有权限的问题了.

seveniruby avatar Jan 14 '14 13:01 seveniruby

对于webview的录制, 包括seleniumIDE, google的bite在内, 都是基于js的录制, 你的做法是对的. 植入js也是将来很重要的测试手段, 还能监控其他的指标. 还是必要的. uiautomator的events机制监听不到webview的事件, 需要更底层的系统的事件监听,比如getevent这类 元素的位置识别可以使用robotium或者appium来解决.

seveniruby avatar Jan 14 '14 13:01 seveniruby