• Python 简单的安卓操作


    ## 导入包
    
    from uiautomator import Device
    from PIL import Image
    import math
    import operator
    from functools import reduce
    
    
    
    
    ## 比较图片
    def image_compare(img1,img2):
        image1 = Image.open(img1)
        image2 = Image.open(img2)
    
        his1 = image1.histogram()
        his2 = image2.histogram()
        result = math.sqrt(reduce(operator.add,list(map(lambda a,b: (a-b)**2,his1,his2)))/len(his1))
        # 值越大,差异越大(不太准,图片稍有改动,值就上好几百了)
        print(result)
    image_compare(r'C:Userszhongtao.wangDesktopa.jpg',r'C:Userszhongtao.wangDesktopc.jpg')
    
    
    ## 手机信息
    d = Device('39504f3231593398')
    print(d.info)
    
    
    # 结果:
    # {'currentPackageName': 'com.android.systemui', 'displayHeight': 2900, 'displayRotation': 0, 'displaySizeDpX': 360, 'displaySizeDpY': 740, 'displayWidth': 1440, 'productName': 'starqltezc', 'screenOn': True, 'sdkInt': 29, 'naturalOrientation': True}
    
    
    ## 手机亮屏/灭屏
    d = Device('39504f3231593398')
    d.screen.on()
    d.screen.off()
    
    
    ## 按键
    d.press("back")
    # 可选项
    # home, back, left, right, up, down, center, menu, search, enter,delete(or del), recent(recent apps), volume_up, volume_down,volume_mute, camera, power.
    
    
    ## 点击坐标
    d.click(200,500)
    d.long_click(x, y)
    
    
    ## 点击文本
    d(textContains='Bluetooth').click()
    d(text="Settings").click()
    d(text="Settings").long_click()
    
    
    ## 滑屏
    #(x1,y1,x2,y2)
    d.swipe(100, 10, 100, 1400)
    
    
    ## 两指手势
    # 两指缩放类似的功能。  ((sx1, sy1), (sx2, sy2)).to((ex1, ey1), (ex2, ey2))
    d().gesture((200, 300), (300, 300)).to((100, 300), (900, 300))
    
    
    ## 拖拽
    # d.drag(sx, sy, ex, ey)
    d(text="Settings").drag.to(x, y, steps=100)
    ## drag the ui object to another ui object(center)
    d(text="Settings").drag.to(text="Clock", steps=50)
    
    
    ## 截图
    d.screenshot("home.png")
    
    
    ## 列表元素
    # 点击子元素
    d(className="android.widget.LinearLayout",resourceId="com.android.settings:id/switch_bar").child(className="android.widget.Switch").click()
    
    
    # 列表滚动查找
    d(className="android.widget.ListView", resourceId="android:id/list").child_by_text(
        "WiFi001",
        allow_scroll_search=True,
        className="android.widget.TextView"
      ).click()
    
    
    ## 元素是否存在
    d(text="Settings").exists # True if exists, else False
    d.exists(text="Settings") # alias of above property.
    
    
    ## 输入、清除文本
    d(text="fg").clear_text()
    d(text="To").set_text("My text...")
    
    
    ## 水平、竖直滚动
    # scroll forward(default) vertically(default)
    d(scrollable=True).scroll(steps=2)
    # scroll forward horizentally
    d(scrollable=True).scroll.horiz.forward(steps=100)
    # scroll backward vertically
    d(scrollable=True).scroll.vert.backward()
    # scroll to beginning horizentally
    d(scrollable=True).scroll.horiz.toBeginning(steps=100, max_swipes=1000)
    # scroll to end vertically
    d(scrollable=True).scroll.toEnd()
    # scroll forward vertically until specific ui object appears
    d(scrollable=True).scroll.to(text="Security")
    
  • 相关阅读:
    9.12 其他样式;JS
    9.11 样式表
    9.9 样式表
    PHP延迟几秒后执行,PHP延迟执行,PHP停顿几毫秒后执行 usleep() 和 sleep()
    PHP 去除url参数中出现+、空格、=、%、&、#等字符的解决办法, PHP去除影响url路径的字符
    java第一堂课-常用的电脑快捷键操作和重要的dos命令
    常用第三方接口,支付宝支付,微信支付,软著,IOS开发者账号
    苹果开发者账号申请流程完整版 https://www.jianshu.com/p/655380201685
    thinkphp 去重查询
    将数据导【入】【excel表】格式 前端页面
  • 原文地址:https://www.cnblogs.com/wztshine/p/12207243.html
Copyright © 2020-2023  润新知