1.uiautomtor2安装:
pip install uiautomator2
pip install pillow (如果需要截图,可安装这个库)
2.模拟器下载: 网易模拟器: mumu.163.com/baidujp/?ld 下载好了安装, 启动模拟器 找到设置-> 关于平板电脑 -> 双击很多次 版本号 进入开发者模式 ,然后打开usb调试,此时不要急着去adb devices查看链接,因为执行了connect才会有adb devices
打开了之后可以用uiautomotor2连接了。
有相关的打印就链接成功了:
注意:连接的时候不要手动去执行adb connect '127.0.0.1:7555'执行完之后执行代码会报错的。手动执行了会有adb devices 但是代码再去链接就会报adb异常 如:
error: unknown host service
4.操作模拟器:
1.下载apk:
d.app_install("链接")
常见的操作参考链接: www.jb51.net/article/205…
#coding:utf-8
import uiautomator2 as u2
import os
def main():
os.system("python -m uiautomator2 init --mirror")
d = u2.connect('127.0.0.1:7555')
#从URL安装apk
#从网页上随便扣一个apk安装路径
#href = "https://files.cnblogs.com/files/FightForFreedom/app-release.apk"
#d.app_install('https://files.cnblogs.com/files/FightForFreedom/app-release.apk')
#包名获取方法:方法一:
#输入命令:adb shell am monitor
#然后启动需要获取包名的应用 参考这个网页:https://blog.csdn.net/No_PainNo_Gain/article/details/106782947
d.app_start('com.hhxplaying.neteasedemo.netease')
#清空数据
#d.app_clear('com.hhxplaying.neteasedemo.netease')
#d.app_stop_all() #停止所有的应用
#d.disable_popups() # 自动跳过弹出窗口 针对有跳出窗口的app
#d.disable_popups(False) # 禁用自动跳过弹出窗
# 获取窗口大小
print("窗口大小:",d.window_size())
# 获取当前应用程序信息。对于某些android设备,输出可以为空
print("程序信息:",d.current_app())
# 获取设备序列号
print("设备序列号:",d.serial)
# 获取WIFI IP
print("WIFI IP:",d.wlan_ip)
# 获取详细的设备信息
print("设备信息:",d.device_info)
#获取app信息
app_info = d.app_info("com.hhxplaying.neteasedemo.netease")
print("app_info: ",app_info)
# 保存应用程序图标
img = d.app_icon("com.hhxplaying.neteasedemo.netease")
img.save("icon.png")
# 停止应用:强行停止
d.app_stop('com.hhxplaying.neteasedemo.netease')
# push文件夹
d.push("foo.txt", "/sdcard/")
# push和重命名
d.push("foo.txt", "/sdcard/bar.txt")
# push fileobj
with open("foo.txt", 'rb') as f:
d.push(f, "/sdcard/")
# 推动和更改文件访问模式
d.push("foo.txt", "/data/local/tmp/", mode=0o755)
d.pull("/sdcard/bar.txt", "bar.txt")
# 如果在设备上找不到文件,FileNotFoundError将引发
try:
d.pull("/sdcard/some-file-not-exists.txt", "tmp.txt")
except FileNotFoundError:
pass
#打开屏幕
d.screen_on()
#关闭屏幕
d.screen_off()
#获取屏幕状态:
screen_status = d.info.get('screenOn')
print("屏幕状态:",screen_status)
d.press("home") # 点击home键
d.press("back") # 点击back键
d.press("left") # 点击左键
d.press("right") # 点击右键
d.press("up") # 点击上键
d.press("down") # 点击下键
d.press("center") # 点击选中
d.press("menu") # 点击menu按键
d.press("search") # 点击搜索按键
d.press("enter") # 点击enter键
d.press("delete") # 点击删除按键
d.press("recent") # 点击近期活动按键
d.press("volume_up") # 音量+
d.press("volume_down") # 音量-
d.press("volume_mute") # 静音
d.press("camera") # 相机
d.press("power") # 电源键
d.unlock()#解锁屏幕
if __name__ == '__main__':
main()