• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于python:PythonUIautomator2控制手机实现自定义脚本

python 搞代码 3年前 (2022-02-20) 51次浏览 已收录 0个评论
文章目录[隐藏]

起因

最近据说按键精灵打包apk要免费了。。。
原本偶然能用一次的,当初看来是能够放弃了,当前改用autojs吧。

不过因而想起了一个需要:Python自定义相干参数(输出文本)管制手机

想起这个需要次要是想利用在挪动端爬虫上,对那些反爬虫机制特地严格的利用,能够从这个角度来实现爬取数据。

比方须要采集某个公众号的文章,就能够通过Python的mitmproxy库来监听,应用UIautomator2库来管制手机去搜寻指标公众号(Python里输出名字传给手机)并获取所有的文章,在mitmproxy里就能够进行相干数据的提取。

Python管制手机的几种计划

  1. adb(须要USB连贯手机且关上USB调试)
  2. UIautomator2(速度绝对较快,应用快捷不便,可用USB/WiFi)
  3. appium(风行、跨平台,封装UIautomator2)

抉择计划

据不肯定可靠消息,adb稳定性很差,appium速度不够快,所以从上手难度、运行速度和稳定性的角度看,我这里选了UIautomator2。

UIautomator2的装置

  1. 装置库

    # 装置 uiautomator2(PC端)
    pip3 install -U uiautomator2
    # 连贯USB,装置蕴含httprpc服务的apk到手机(手机端)
    python -m uiautomator2 init

    留神:装置失败的先看看是不是网络问题,我用清华的源装置失常。第二步装置可能呈现各种问题,能够参考github:https://github.com/openatx/uiautomator2

  2. 运行示例

间接新建Python文件,内容为:

import uiautomator2 as u2

d = u2.connect() # 连贯设施
print(d.info)
  1. 装置辅助编辑器weditor

    # 装置
    pip install --upgrade weditor
    # 装置挪动端(下面装置过了这里就能够跳过)
    python -m uiautomator2 init
    # 启动
    python -m weditor

    脚本实例

  2. 管制微信读书刷浏览时长

    import uiautomator2 as u2
    import time
    
    d = u2.connect('emulator-5554')  # connect to device
    # d = u2.connect('192.168.1.7')
    
    # height = d.info['displayHeight']
    # width = d.info['displayWidth']
    
    print(d.info)
    d.app_start('com.tencent.weread')
    d.toast.show('启动微信读书')
    print('启动微信读书')
    
    d(resourceId="com.tencent.weread:id/rx").click()
    d.toast.show('点击书架')
    print('点击书架')
    
    # 手机
    # xpath = '//*[@resource-id="com.tencent.weread:id/b51"]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]'
    # 模拟器
    xpath = '//*[@resource-id="com.tencent.weread:id/ni"]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]'
    d.xpath(xpath).click()
    
    d.toast.show('点击第1本书')
    print('点击第1本书')
    
    print('正在浏览...')
    start = time.perf_counter()
    page = 0
    
    while True:
     page += 1
     d.click(0.985, 0.537)
     d.toast.show('已看 {} 页'.format(page))
     time.sleep(10)  # 一页10秒
     readtime = time.perf_counter() - start
     if readtime > 5 * 3600:
         break
    
    print('共看了 {} 页,用时 {}'.format(page, readtime / 3600))
  3. 管制抖音/快手极速版等短视频软件自动播放下一个(继续下滑)刷金币

    import uiautomator2 as u2
    import time
    import random
    
    d = u2.connect('emulator-5554')  # connect to device
    # d = u2.connect('192.168.1.7')
    
    # height = d.info['displayHeight']
    # width = d.info['displayWidth']
    
    print(d.info)
    d.app_start('com.kuaishou.nebula', "com.yxcorp.gifshow.HomeActivity")
    d.toast.show('启动快手极速版')
    print('启动快手极速版')
    
    # 模拟器
    d.xpath(
     '//*[@resource-id="com.kuaishou.nebula:id/recycler_view"]/android.widget.RelativeLayout[2]/android.widget.ImageView[1]'
    ).click()
    d.toast.show('点击第2视频')
    print('点击第2视频')
    
    print('正在看视频...')
    start = time.perf_counter()
    page = 0
    
    while True:
     page += 1
     d.swipe(0.5, 0.8, 0.6, 0.3, 0.2)
     d.toast.show('已看 {} 个'.format(page))
     time.sleep(10 + random.randint(5, 12))  # 一个10+n秒
     readtime = time.perf_counter() - start
     if readtime > 5 * 3600:
         break
    
    print('共看了 {} 个,用时 {}'.format(page, readtime / 3600))
    

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于python:PythonUIautomator2控制手机实现自定义脚本

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址