广州C/C++培训
达内广州岗顶中心

18087159764

热门课程

达内广州c语言班:Python调用安卓adb命令

  • 时间:2017-10-23
  • 发布:广州c++培训机构
  • 来源:达内新闻

1.1、概要

今天是《Python自动化测试应用》的第十篇,本篇文章为什么会讲Python调用执行adb命令呢?因为在Web的自动化测试框架Pyswat完不成后,就开始编写Android APP的测试框架了,目前Pyapp的框架也基本功能都完成,所以借此机会分享一下,Python怎么玩转adb命令。

广州c++培训班

1.2、Pyapp到底用的是Appium还是adb?

使用过Pyswat框架的同学可能知道,Pyswat是底层调用的Selenium那一套,而Pyapp实现完全和Appium没有一点关系。可能有同学就会问了,为什么我会这样去做?在着手设计Pyapp框架之初,确实也纠结了,考虑了几天时间,我到底是用Appium去实现自动化框架,还是adb命令去实现。最后还是确定利用adb命令来作为操控app的基础方式实现Pyapp的自动化测试框架。接下来我先说明这样做的几点原因:

1、第二个没有选择Appium的原因是,大家知道Python脚本如果搭配Appium的话,你需要首先把Appium的使用环境搭建起来,这一步对于新手来说或者是对于第一次使用Pyapp框架的同学来说非常不友好(因为Pyswat在对外发布后,发现很多同学在环境搭建上非常不熟练,产生过很多问题,导致无法正常使用Pyswat框架),而且每次运行脚本都要启动Appium的客户端,非常耗时,如果程序出问题还需要反复的启动关闭服务才行,无形中增加的操作成本,所以这也是抛弃Appium作为框架底层的原因。反过来看adb是android的原生命令,你只要搭好android sdk就可以使用了,搭建步骤也很简单。

2、最后adb命令由于是android的原生操作命令,支持实现的功能非常多。这里举几个Pyapp里实现的功能例子:获取,修改手机当前使用的输入法(adb shell ime list),获取当前手机界面的活动activity(adb shell dumpsys activity activities),安装,卸载,启动app,点击,划屏,长按,硬件输入,截屏等。

所以最后总结一下,这里只是说明adb命令更适合我开发Pyapp测试框架,而不是说Appium不好。针对只是单纯的使用Python开发自动化脚本的同学来说,Appium更为简单些。

1、由于Pyapp同样是采用录制,回放的模式(与Pyswat框架模式一致)。那么录制的话就要考虑录制的实现,一方面是核实触发录制,也就是什么时候知道测试人员点击了APP界面,另一方面要考虑测试人员点击的是当前APP界面的哪个元素。解决了这两个问题基本上录制就没问题了。那么考虑到这两个因素,我们来看看Appium能做到监控到用户的操作吗,应该没有因为我在Pyswat里是利用了Python写的钩子程序监控电脑的鼠标和键盘的操作,从而达到监控用户输入的目的,而在手机上是不能按照写钩子去监控到手机的。

既然Appium不行,我们转换目标看看adb可以吗,它有对应的命令吗?使用过adb命令的同学应该知道可以通过 adb shell input tap/swipe/text命令去做点击,划屏,输入等操作,那么反过来adb有没有获取手机操作事件的命令呢,大家可能会想到logcat日志可以记录手机的操作日志,但是其实adb有一个adb shell getevent命令可以获取到当前屏幕点击事件及坐标,所以能够获取到这个重要的信息我们的录制功能基本上实现起来就没问题了。

4、Python如何调用adb命令

Python中执行cmd命令可以用到os和subprocess两个模块。区别在于os是阻塞式的,subprocess是非阻塞式的,所以我们使用subprocess是比较适合的。接下来我先举一个查询连接设备的命令来看看Python中怎么样的写法。用到的命令为 adb devices。

免责声明:本文由广州c++培训机构小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵权请联系我们进行删除。

上一篇:达内广州c++培训:.Net Core注册服务妙招
下一篇:达内c语言班:快递单“变脸”了

广州达内:苹果AirPods与谷歌Pixel Buds小耳机对比

手机摄像头妙用方法大汇集

苹果冲向万亿市值的这个2017年

32GB内存条还自带64GB闪存

选择城市和中心
贵州省

广西省

海南省