python uiautomator2 adb控制手机

安装包

pip install --pre uiautomator2
pip install pillow

初始化

python -m uiautomator2 init

可视化工具

pip install --pre --upgrade weditor

开启可视化工具

python -m weditor

查看pid

netstat -ano

连接mumu

adb connect 127.0.0.1:7555

查看 需要执行初始化

adb devices

UIAutomator2一些操作

# 连接手机的方式:
# 1.通过WiFi:ip根据情况自己修改
d=u2.connect_wifi("ip")
# 1.通过usb:
d=u2.connect_usb()
# 安装应用
d.app_install(' url '# 跳过弹窗,禁止弹窗
d.disable_popups() # 自动跳过弹出窗口 
d.disable_popups(False# 禁用自动跳过弹出窗口

d.info  # 获取基本信息
d.window_size()  # # 获取窗口大小
# 打开/关闭屏幕
d.screen_on()  # 打开 
d.screen_off()  # 关闭
# 获取当前屏幕状态
d.info.get('screenOn')
# 解锁屏幕
d.unlock()
# 点击屏幕
d.click(x, y)
# 双击
d.double_click(x,y)
# 长按一下屏幕
d.long_click(x,y)
d.long_click(x,y)  # 长按1秒(默认)
# 滑动
d.swipe(x, y, x, y)
# 解锁9宫格,points不抬起
d.swipe_points([(0.228, 0.525),(0.005, 0.525),(0.766, 0.525),(0.5, 0.677),(0.228, 0.828),(0.497, 0.828),(0.761, 0.828)],0.05)
# 按键操作
d.press("home") 
d.press("back") 
d.press(x, y)
# 向上滑动
d(scrollable=True).scroll.vert.backward()
# 竖直滑动到结尾
d(scrollable=True).scroll.toEnd(60)
# 向下滑动
d(scrollable=True).scroll(steps=30)
# 竖直滑动到开头
d(scrollable=True).scroll.toBeginning(steps=60)
# 水平向右滑动
d(scrollable=True).scroll.horiz.forward(steps=60)
# 水平向右滑动,直到最右边
d(scrollable=True).scroll.horiz.toEnd(steps=50, max_swipes=500)
# 水平向左滑动
d(scrollable=True).scroll.horiz.backward(steps=50)
# 水平向左滑动,直到最左边
d(scrollable=True).scroll.horiz.toBeginning(steps=100, max_swipes=1000)
# 拖动
d(text="Settings").drag_to(x, y, duration=0.5)
# 拖动到指定位置,1s内完成:
d(text="Settings").drag_to(text="text", duration=1)
# 双指从(a,b),(c,d)滑动(a1,b1),(c1,d1),步长100:
d().gesture((a,b),(c,d), (a1,b1),(c1,d1),steps=100)
# 从屏幕外侧向中心滑动,percent为左右起始位置占两边的比例:
d().pinch_out(percent=33, steps=100)
# 从屏幕中心向外侧滑动,percent为左右起始位置占两边的比例:
d().pinch_out(percent=33, steps=100)

Python_UIAutomator2屏幕操作行为

# 1.点击特定对象中心位置:
d(text="Settings").click()
# 2.等待对象显示并点击,等待最多10s:
d(text="Settings").click(timeout=10)
# 3.当10s内对象出现就点击,默认0s:
clicked = d(text='Skip').click_exists(timeout=10.0)
# 4.点击并轮询对象直到消失,其中maxretry为最多点击次数,默认10;interval为轮询时间间隔,默认1:
d(text="Skip").click_gone(maxretry=10, interval=1.0)
# 5.长按指定的对象,duration为按住时间,timeout为超时时间:
d(text="Settings").long_click(duration=10,timeout=10)
# 6.拖动指定对象到x,y位置,0.5s完成:
d(text="Settings").drag_to(x, y, duration=0.5)
# 7.拖动指定对象到另一个对象位置,0.5s内完成:
d(text="Settings").drag_to(text="Clock", duration=0.5)
# 8.双指从(a,b),(c,d)滑动(a1,b1),(c1,d1),步长100:
d().gesture((a,b)(c,d), a1,b1)(c1,d1),steps=100)
# 9.从屏幕外侧向中心滑动,percent为左右起始位置占两边的比例:
d().pinch_out(percent=33, steps=100)
# 10.从屏幕中心向外侧滑动,percent为左右起始位置占两边的比例:
d().pinch_out(percent=33, steps=100)
# 11.等待对象:
d(text='相机').wait(10)
# 12.等待对象消失,最多等待10s:
d(text='相机').wait_gone(timeout=10)
# 13.滚动:
d(scrollable=True).scroll(steps=10)  # a.向上滚动
d(scrollable=True).scroll.vert.backward()  # b.向下滑动
d(scrollable=True).scroll.horiz.forward(steps=50)  # c.水平向右滚动
d(scrollable=True).scroll.horiz.backward(steps=50)  # d.水平向左滚动
d(scrollable=True).scroll.horiz.toBeginning(steps=100, max_swipes=1000)  # e.水平滑动到最左边
d(scrollable=True).scroll.horiz.toEnd(steps=100, max_swipes=1000)  # f.水平滑动到最右边
d(scrollable=True).scroll.toEnd()  # g.竖直滑动到结尾
d(scrollable=True).scroll.toBeginning(steps=50)  # h.竖直滑动到开头
d(scrollable=True).scroll.to(text ='测试')  # i.滑动到指定位置(测试)

命令行

init: 为设备安装所需要的程序
install: 安装apk,apk通过URL给出
python -m uiautomator2 install $device_ip https://example.org/some.apk
clear-cache: 清空缓存
python -m uiautomator2 clear-cache
app-stop-all:停止所有应用
python -m uiautomator2 app-stop-all $device_ip
screenshot: 截图
python -m uiautomator2 screenshot $device_ip screenshot.jpg
healthcheck: 健康检查
python -m uiautomator2 healthcheck $device_ip

你可能感兴趣的:(其他)