• app小程序手机端Python爬虫实战04-u2自动化工具基本操作-操作设备


    作者:虚坏叔叔
    博客:https://xuhss.com

    早餐店不会开到晚上,想吃的人早就来了!😄

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t613C2v5-1659185048330)(C:\Users\Administrator\Desktop\app小程序手机端Python爬虫实战04-u2自动化工具基本操作-操作设备.png)]

    一、启动uiautomator服务

    import uiautomator2 as u2
    import time
    # 通过手机的序列号接通
    d = u2.connect_usb("127.0.0.1:62001")
    print(d.service("uiautomator").running())
    # 通过start方法启动uiautomator服务
    d.service("uiautomator").start()
    time.sleep(2)
    print(d.service("uiautomator").running())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    运行输出数据:

    C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe C:/Users/Administrator/Desktop/u2_project/testu2.py
    False
    True
    
    • 1
    • 2
    • 3

    手机虚拟机也显示服务启动:

    在这里插入图片描述

    停止服务的话只需要这样调用stop方法即可

    d.service("uiautomator").stop()
    
    • 1

    二、查看atx-agent状态

    uiautomator并没有提供atx启动停止相关操作,但是提供了查看状态的接口,可以手动关闭atx-agent。

    但最好不要停止atx-agent,如果停止,程序就无法控制移动设备。

    # 查看atx-agent运行状态
    print(d.agent_alive)
    
    • 1
    • 2

    如果atx-agent停止了,可以通过connect_usb代码再次唤醒:

    d = u2.connect_usb("127.0.0.1:62001")
    
    • 1

    当atx-agent和uiautomator都处于运行时

    我们可以查看设备的数据,如果你发现查看不了,就是服务停止运行了,你就可以通过启动这2个服务就看

    # 查看设备数据
    print(d.device_info)
    
    • 1
    • 2

    输出数据如下:

    C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe C:/Users/Administrator/Desktop/u2_project/testu2.py
    True
    {'udid': 'android-08:00:27:77:f5:4d-AOSP_on_Shama', 'version': '5.1.1', 'serial': 'android', 'brand': 'Android', 'model': 'AOSP on Shama', 'hwaddr': '08:00:27:77:f5:4d', 'sdk': 22, 'agentVersion': '0.10.0', 'display': {'width': 1080, 'height': 1920}, 'battery': {'acPowered': False, 'usbPowered': True, 'wirelessPowered': False, 'status': 5, 'health': 2, 'present': True, 'level': 90, 'scale': 100, 'voltage': 10000, 'temperature': 378, 'technology': 'Li-ion'}, 'memory': {'total': 3566000, 'around': '3 GB'}, 'arch': '', 'owner': None, 'presenceChangedAt': '0001-01-01T00:00:00Z', 'usingBeganAt': '0001-01-01T00:00:00Z', 'product': None, 'provider': None} 
    
    
    • 1
    • 2
    • 3
    • 4

    三、app安装启动相关操作

    3.1 安装app

    可以获取app

    # 安装apk
    d.app_install(data="C:\\Users\\Administrator\\Downloads\\3.5.6.apk")
    
    • 1
    • 2

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RmFwkPBZ-1659185048331)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220730201014019.png)]

    3.2 启动app

    启动app需要知道包名,包名可以通过aapt获取:

    cd /d C:\Program Files (x86)\Nox\bin
    aapt dump badging C:\Users\Administrator\Downloads\3.5.6.apk
    
    • 1
    • 2

    在这里插入图片描述

    然后启动app:

    # 启动app
    d.app_start(package_name="com.tal.kaoyan")
    
    • 1
    • 2

    3.3 查看前台运行的app数据

    # 查看当前前台运行的app数据
    print(d.app_current())
    
    • 1
    • 2

    输出数据:

    {'package': 'com.tal.kaoyan', 'activity': 'com.kaoyan.kylogin.ui.login.LoginActivity'}
    
    • 1

    3.4 停止app运行

    # 停止app运行
    d.app_stop(package_name="com.tal.kaoyan")
    
    • 1
    • 2

    3.5 清楚app缓存

    # 清理app缓存
    d.app_clear(package_name="com.tal.kaoyan")
    
    • 1
    • 2

    3.6 卸载app

    # 卸载app
    d.app_uninstall(package_name="com.tal.kaoyan")
    
    • 1
    • 2

    3.7 获取当前设备所有app数据

    # 获取当前设备所有app数据
    print(d.app_list())
    
    • 1
    • 2
    ['com.github.uiautomator', 'com.android.providers.telephony', 'com.android.providers.calendar', 'com.android.providers.media', 'com.android.wallpapercropper', 'com.android.documentsui', 'com.android.externalstorage', 'com.android.htmlviewer', 'com.android.mms.service', 'com.android.providers.downloads', 'com.github.uiautomator.test', 'com.android.browser', 'com.android.soundrecorder', 'com.android.defcontainer', 'com.android.providers.downloads.ui', 'com.android.pacprocessor', 'com.android.certinstaller', 'android', 'com.android.contacts', 'com.android.camera2', 'com.android.backupconfirm', 'com.android.provision', 'com.android.phasebeam', 'com.android.providers.settings', 'com.android.sharedstoragebackup', 'com.android.dreams.basic', 'com.android.inputdevices', 'com.google.android.webview', 'com.android.onetimeinitializer', 'com.android.server.telecom', 'com.android.keychain', 'com.android.inputservice', 'com.android.gallery3d', 'com.android.packageinstaller', 'com.svox.pico', 'com.android.proxyhandler', 'com.cyanogenmod.filemanager', 'com.android.managedprovisioning', 'com.android.wallpaper.livepicker', 'com.android.settings', 'com.android.vpndialogs', 'com.android.phone', 'com.android.shell', 'com.android.providers.userdictionary', 'com.android.location.fused', 'com.android.systemui', 'com.android.bluetooth', 'com.android.providers.contacts', 'com.android.captiveportallogin']
    
    • 1

    3.8 获取正在运行的app列表

    # 获取正在运行的app列表
    print(d.app_list_running())
    
    • 1
    • 2
    ['com.android.externalstorage', 'com.github.uiautomator', 'com.android.providers.calendar', 'com.android.systemui', 'com.android.defcontainer', 'com.android.inputservice', 'com.android.documentsui', 'com.android.keychain', 'com.svox.pico', 'com.android.phone']
    
    • 1

    3.9 停止所有app运行

    # 停止所有app运行
    d.app_stop_all()
    
    • 1
    • 2

    3.10 卸载所有app

    # 卸载所有app
    d.app_uninstall_all()
    
    • 1
    • 2

    四、总结

    • 本文介绍了Uiautomator2自动化工具基本操作。
    • 如果觉得文章对你有用处,记得 点赞 收藏 转发 一波哦,博主也支持为铁粉丝制作专属动态壁纸哦~

    💬 往期优质文章分享

    🚀 优质教程分享 🚀

    • 🎄如果感觉文章看完了不过瘾,可以来我的其他 专栏 看一下哦~
    • 🎄比如以下几个专栏:Python实战微信订餐小程序、Python量化交易实战、C++ QT实战类项目 和 算法学习专栏
    • 🎄可以学习更多的关于C++/Python的相关内容哦!直接点击下面颜色字体就可以跳转啦!
    学习路线指引(点击解锁)知识定位人群定位
    🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    💛Python量化交易实战 💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
    ❤️ Python&C++混合编程❤️难度偏高分享学习Python C++混合编程知识!

    🚀 资料白嫖,温馨提示 🚀

    关注下面卡片即刻获取更多编程知识,包括各种语言学习资料,上千套PPT模板和各种游戏源码素材等等资料。更多内容可自行查看哦!

    请添加图片描述

  • 相关阅读:
    【ARMv8 SIMD和浮点指令编程】浮点加减乘除指令——四则运算
    【Express.js】软件构建
    IDEA中maven无法下载依赖解决方案
    Java基础28(方法重载)
    Mysql(三) mysql事务和隔离级别
    【无人机】四轴无人机的轨迹进行可视化和动画处理(Matlab代码实现)
    ORA-32771 cannot add file to bigfile tablespace
    gateway基本配置
    Spark本地模式和集群模式安装配置
    操作系统复习第三章:处理机调度与死锁
  • 原文地址:https://blog.csdn.net/huangbangqing12/article/details/126077458