移动测试基础 Adb-For-Test 使用 adb 命令实现元素定位等功能,用来辅助 android 测试

xuxu · 2014年08月01日 · 最后由 securitytest 回复于 2017年09月26日 · 3600 次阅读

学习编程语言半年了,还是个初学者,做 android 测试一年时间,平时使用的最多的就是 adb 命令,由此,在工作的业余,将自己常用的一些命令使用 python 和 java 封装成了自己的工具库,另外使用了 uiautomator 命令,实现了通过元素进行定位(需要 android 4.0 以上),拥有截屏、截取元素区域图片、图片对比的功能,在此基础上整合出来了这个 Adb For Test,学习语言的时间不是很多,在写代码的过程中经常需要去百度、谷歌寻找答案,所以其中肯定有很多惨不忍睹的代码...
由于平时的测试主要集中在 android 4.3、4.4 平台上,所以其中的部分功能是无法在旧的 android 版本上实现的。当作学习语言的实践了!!欢迎指出其中的不足,让我更好的学习这些语言~~
代码没放在 github 上,而是放在了 oschina 上:
https://git.oschina.net/xuxu1988/Adb-For-Test.git

目前转到了 github 上:https://github.com/gb112211/Adb-For-Test.git
有兴趣的学可以看下!

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 53 条回复 时间 点赞

不错的项目,把 adb 常用的东西封装了一下,学习编程语言半年的时间内能够整理出来这个东西,充分说明楼主很务实。

嗯支持~~看看~~

#2 楼 @monkey 额,元素定位好像有点。。。这个定位就是返回坐标值?

截图对比可以考虑一下性能问题,比如我要批量对比~

#3 楼 @qddegtya 我刚刚看了下。adb 的封装还是非常有好处的。也算是一种总结性的文档了

#3 楼 @qddegtya 方法倒是就是我们之前说的获取/uidump.xml。但是返回坐标其实蛮好的,所有的操作也都可以做了。相当于变相的 monkeyrunner

#7 楼 @monkey 但是,这跟实际的定位有本质出入,我们所说的定位是能够定位到并且拿到这个对象。

#7 楼 @monkey 恩,uiautomatorviewer 用的不就是这招么,uidump.xml,你懂得~

楼主最好加入一些异常判断。。。。。。

#8 楼 @qddegtya 这个对象。。。。获取不到吧。。其实我以前想过。。如果有源码直接去扫描 layout 结构。。。

#9 楼 @qddegtya 看到了图片对比的那段代码,那个算法还是很靠谱的~

#11 楼 @monkey 想多了。。。。

#11 楼 @monkey 不过我看到楼主使用 for i in xrange(length),还是很欣慰的,好习惯。

Github 上放一份吧,我们放到 Testerhome 组织下面,这种都要慢慢优化和维护的

#14 楼 @qddegtya 不好的习惯是 for i in range 么。。。

@qddegtya @qddegtya 是有很多异常判断没加,后面抽空慢慢完善吧,学代码的一个实践,下班、周末回家都对着电脑,女朋友都抱怨了。。

#16 楼 @monkey 你是不是躺枪了,当然不好的是 range 了,本质性能差异啊,一个生成的是列表,一个生成的是迭代器,这就意味着,xrange 每次只需要一小点内存空间。

#17 楼 @xuxu Monkey,对于楼主的这种情况怎么破。。。@monkey

#17 楼 @xuxu 哇,竟然还有女朋友,人生赢家!~~

#18 楼 @qddegtya 这个就是 c 层实现的不同。不过从使用上面来讲,反正一般 script 感觉不出来。我啥都不知道

#21 楼 @monkey 数据量大的时候区别就大了,一般 script 是感觉不出来

#18 楼 @qddegtya 你让人家盯着电脑颓废的怎么办,跟女朋友解释啊,就说你在写代码啊。

#17 楼 @xuxu 接两个私活,请你女朋友去吃一顿牛排,保证服服贴贴

xuxu #25 · 2014年08月01日 Author

@qddegtya 我觉得一般的 script 是不用去刻意的考虑性能的。。,只要能跑起来能完成测试就 ok。

#24 楼 @qddegtya 你太拜金了。。。

#25 楼 @xuxu 你的理解是对的。。。不要太纠结

#27 楼 @monkey monkey,你是第一个这么说我的。。。我不是酱紫的淫!

xuxu #29 · 2014年08月01日 Author

@qddegtya 明天是七夕。。本来准备去买点啥的,无奈发现口袋没钱,钱全被老婆管着了- -,每天口袋不超过 100,好男人吧!

#28 楼 @qddegtya 真的么。。女朋友和老婆不能用钱去安慰的。。。

#29 楼 @xuxu 额。。那啥。。。写个程序给你老婆用。。

#29 楼 @xuxu 男人不该这样,硬起来好么。。。@Monkey

#32 楼 @qddegtya 额。。怎么硬。。人家蛮好的。。你太不好了。。。

#33 楼 @monkey 额,对对对,我们应该鼓励这样的好男人才对。。。。我错了~

xuxu #35 · 2014年08月01日 Author

@qddegtya 小幸福,哈哈~~ @monkey 因为做财务,之前让写个自动读取工资发送邮件的程序,工作太忙,准备闲点的时候写,谁想已经被她公司的一小伙子帮写了。。。

#35 楼 @xuxu 兄弟,你这也太危险了。。。。

@qddegtya 危险到不至于,这点自信俺还是有的!!

#37 楼 @xuxu 好吧,点赞!

xuxu #39 · 2014年08月01日 Author

@qddegtya @monkey 准备下班了,哥几个都回家过节吧!!哈哈

#39 楼 @xuxu 我准备出去吃牛排去~

#32 楼 @qddegtya
我知道了

def yingqilai(myself_money,girlfriend_money):
    if girlfriend_money>myself_money:
       new_girlfriend = fenshou.changeGirlFriend()
       if new_girlfriend.money()<myself_money:
            marry()

对不对!!!

#41 楼 @monkey 。。。。诶呀,别闹~

#41 楼 @monkey fenshou 这个类还提供 changeGirlFriend 的方法?真贴心!

#43 楼 @joshua 是啊~~~多周到呀~

歪楼高手啊…

好有用!!!!

xuxu #47 · 2014年10月11日 Author

@shixue33 谢谢支持!~https://github.com/shixue33/GetViewInfo_for_Android.git,你的这个也很好呢!

( ⊙ o ⊙ ) 啊!有个问题,在这个项目里边有没有提供这样的方法,输入界面的坐标值,然后返回范围包含这个坐标的 node 呢?事实可能不止一个。

xuxu #49 · 2014年10月11日 Author

@shixue33 没有封装这个方法诶。

#49 楼 @xuxu 0.0 嗷。我想用你提供的方法做一个生成代码的工具

xuxu #51 · 2014年10月11日 Author

@shixue33 是生成什么样的代码?求知道~哈哈

#51 楼 @xuxu 生成脚本,我试试看,能用的话再放出来

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