<h1><strong>一、uiautomator2</strong></h1>
<p><a href="https://developer.android.com/training/testing/ui-automator.html">UiAutomator</a>是Google提供的用来做安卓自动化测试的一个Java库,基于Accessibility服务。功能很强,可以对第三方App进行测试,获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作,但有两个缺点:1. 测试脚本只能使用Java语言 2. 测试脚本要打包成jar或者apk包上传到设备上才能运行。</p>
<p>我们希望测试逻辑能够用Python编写,能够在电脑上运行的时候就控制手机。这里要非常感谢 Xiaocong He (<a href="https://github.com/xiaocong">@xiaocong</a>),他将这个想法实现了出来(见<a href="https://github.com/xiaocong/uiautomator">xiaocong/uiautomator</a>),原理是在手机上运行了一个http rpc服务,将uiautomator中的功能开放出来,然后再将这些http接口封装成Python库。 因为xiaocong/uiautomator这个库,已经很久不见更新。所以我们直接fork了一个版本,为了方便做区分我们就在后面加了个2 <a href="https://github.com/openatx/uiautomator2">openatx/uiautomator2</a></p>
<p>除了对原有的库的bug进行了修复,还增加了很多新的Feature。主要有以下部分:</p>
<ul><li>设备和开发机可以脱离数据线,通过WiFi互联(基于<a href="https://github.com/openatx/atx-agent">atx-agent</a>)</li><li>集成了<a href="https://github.com/openstf/minicap">openstf/minicap</a>达到实时屏幕投频,以及实时截图</li><li>集成了<a href="https://github.com/openstf/minitouch">openstf/minitouch</a>达到精确实时控制设备</li><li>修复了<a href="https://github.com/xiaocong/uiautomator">xiaocong/uiautomator</a>经常性退出的问题</li><li>代码进行了重构和精简,方便维护</li><li>实现了一个设备管理平台(也支持iOS) <a href="https://github.com/openatx/atxserver2">atxserver2</a></li><li>扩充了toast获取和展示的功能</li></ul>
<p>这里要先说明下,因为经常有很多人问 openatx/uiautomator2 并不支持iOS测试,需要iOS自动化测试,可以转到这个库 <a href="https://github.com/openatx/facebook-wda">openatx/facebook-wda</a>。</p>
<p>PS: 这个库 <a href="https://github.com/NeteaseGame/ATX">https://github.com/NeteaseGame/ATX</a> 目前已经不维护了,请尽快更换。</p>
<p>这里有一份快速参考,适合已经入门的人 <a href="https://github.com/openatx/uiautomator2/blob/master/QUICK_REFERENCE.md">QUICK REFERENCE GUIDE</a>,欢迎多提意见。</p>
<p>Requirements</p>
<ul><li>Android版本 4.4+</li><li>Python 3.6+ (社区反馈3.8.0不支持, 但是3.8.2支持)</li></ul>
<p>如果用python2的pip安装,会安装本库的老版本0.2.3;如果用python3.5的pip安装,会安装本库的老版本0.3.3;两者均已经不会再维护;PYPI上的最近版本是这个:<a href="https://pypi.org/project/uiautomator2/">https://pypi.org/project/uiautomator2/</a></p>
<p>QUICK START</p>
<p>先准备一台(不要两台)开启了开发者选项的安卓手机,连接上电脑,确保执行adb devices可以看到连接上的设备。</p>
<p>运行pip3 install -U uiautomator2 安装uiautomator2</p>
<p>运行python3 -m uiautomator2 init安装包含httprpc服务的apk到手机+atx-agent, minicap, minitouch (在过去的版本中,这一步是必须执行的,但是从1.3.0之后的版本,当运行python代码u2.connect()时就会自动推送这些文件了)</p>
<p>命令行运行python打开python交互窗口。然后将下面的命令输入到窗口中。</p>
<pre class="blockcode"><code>import time
import uiautomator2 as u2
d = u2.connect_wifi('10.0.64.231')
# d = u2.connect() # connect to device
print(d.info)
# print(d.service("uiaotumator").running)
#查看uiaotumator服务是否开启
print(d.uiautomator.running())
#启动 停止 uiautomator 服务
# print(d.uiautomator.start())
print(d.uiautomator.stop())
#查看age运营状态,如果atx停止需要重新usb连接唤醒或者app手机上开启
print(d.agent_alive)
#获取设备信息
# print(d.device_info)
print(d.window_size())
print(d.wlan_ip)
time.sleep(3)
#usb链接
# d = u2.connect_usb('BQU4RWBEYLSORS5L')
# d = u2.connect() # connect to device
# print(d.info)
#adb-usb链接
# d = u2.connect_adb_wifi('10.0.64.231:5555')
# d = u2.connect() # connect to device
# print(d.info)
#启动手机app
#1.通过aapt获取包名: ./aapt2 dump badging /Users/wangyun/Downloads/aweme_aweGW_v11.2.0_97887f5.apk
#2.通过editor获取包名
#3.通过 weditor获取包名
pakagename = 'com.ss.android.ugc.aweme'
d.app_start(pakagename)
time.sleep(5)
d.app_stop(pakagename)
</code></pre>
<h2> </h2>
<h1><strong>二、mitmproxy</strong></h1>
<h2>mitmproxy安装:</h2>
<pre class="blockcode"><code>pip3 install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com mitmproxy</code></pre>
<p>mitmproxy 只能liunx启动</p>
<p>mitmdump:可以进行windows,mac |
|