Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
luxiaoyu opened this issue Dec 17, 2013 · 5 comments
Open

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

luxiaoyu opened this issue Dec 17, 2013 · 5 comments
Labels

Comments

@luxiaoyu
Copy link
Contributor

有同学想写一个不需要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

@seveniruby
Copy link

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

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

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

@seveniruby
Copy link

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

@luxiaoyu
Copy link
Contributor Author

对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

@seveniruby
Copy link

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
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants