移动测试基础 monkeyrunner 控件交互遇到的问题

jacky · 2014年03月18日 · 最后由 Monkey 回复于 2014年03月20日 · 1215 次阅读

想用 monkeyrunner 做一些自动化测试,首先想到 sdk 自带的 MonkeyRunner,MonkeyDevice,EasyMonkeyDevice,这些对于有 id 的控件很容易就能找到,但是没有 id 的就没办法了 (目前我没发现)。
对于没 id 的我想根据上面的 text 找到,上网搜了下,有个 AndroidViewClient,用 findViewWithText(text).touch() 可以实现,它也有 findViewById(_id) 方法,但是这个方法找不到对应的控件,返回 None。
现在的情况是有 id 的用 sdk 自带的可以,没有 id 有 text 的用 AndroidViewClient 可以。为什么 AndroidViewClient id 的方法不能用呢,有用过的吗?

共收到 9 条回复 时间 点赞

没明白 LZ 的问题,据我所知,MonkeyRunner 是根据手机屏幕坐标来进行点击、拖动或者其他操作的,和有没有 id 没关系。你只需要设置点击固定的坐标即可,根本不需要知道控件的 id。

#1 楼 @joshua 他估计是用的 monkeyrunner+view server 的方案。 不过 @jacky 说的我也没看懂

@joshua @seveniruby HI,MR 只能根据坐标吗,有没有其他的操作控件的方法?谢谢

#3 楼 @jacky 解决的方法就是结合 view server, 先查询 viewserver 得到特定控件的坐标 然后通过 mr 点击它

应该是 import 了 hierarchyviewer 之后的使用?但没有 id 是说 app 本身没有 id,还是你抓不到?

@monkey hierarchyviewer 和 EasyMonkeyDevice 都是只能根据 id 操作。有的本身没有 id,比如状态栏 里的选项,有的父结点有 id,获取父结点后能找到需要的 View,但是 MR 貌似没有点击 View 的方法。

#6 楼 @jacky 其实所以你的问题本身就是,如果有些控件没有 id 的话,mr 就是除了坐标,没有其他方法来做操作了?对么?

@monkey 对.

#8 楼 @jacky 额。。那么我个人觉得还是回到我最早想问的一个问题。就为什么一定要选择 mr 呢。mr 也是可以做的,可以自己封装 jar 调用

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册