Python3 使用UIautomator2移动端自动化

语言:python

1.环境搭建

1.1安装Python

安装完毕后确保环境变量配置完毕

1.2安装atx-agent用于连接手机

在安装atx和weditor建立连接的同时需要先下载安卓调试桥adb

 将adb所在目录设置Path环境变量

用数据线连接电脑然后开启开发者模式并在cmd输入adb devices列出连接的设备

将获取的设备序列号输入在浏览器Weditor中并connect,开始自动安装ATX到该手机上

1.3安装weditor用于查看手机

pip install weditor==0.6.4

pip list | findstr weditor 

 python -m weditor 

如果安装失败可以尝试如下方式解决:

  •  pip install -U setuptools  //更新模块setuptools
  • pip install -U weditor   
  • git clone https://github.com/openatx/weditor
  • pip3 install -e weditor

1.4安装uiautomator2用于代码操作手机

编写代码

也可在工具的插件市场中安装

device = u2.connect("192.168.0.187") # tcpip同个局域网连接,的方式即可连接手机设备通过adb桥的tcp协议进行无线联调 

import uiautomator2 as u2;  # 依赖包

if __name__ == '__main__':

    # device = u2.connect() # 模拟器默认连接方式
    device = u2.connect("192.168.0.187:5555") # tcpip同个局域网连接
    # device = u2.connect("46d0c494") # usb连接,需要开启开发者模式,用atx也可以开启开发中模式,cmd输入adb devices获取设备号
    print("device_info==========================")
    print(device.device_info)
    device(text='QQ').click()


无线联机

手机开启开发者模式并开启usb调试,此时才能连接同局域网目标手机的tcp/ip端口。连接后才能通信。更多原理详见安卓官网

2.API介绍

2.1app的安装、卸载、打开、关闭、清除数据 

获取包名的三种方式:

获取包名时,该app必须运行起来

2.2设备信息、屏幕大小、截屏、推送文件到手机、拉取手机的文件

案例演练


 

查看手机的文件系统

 

2.3按键操作

音量加、减、静音、预览最近打开的程序、电源键


 

2.4元素定位

遇见相同的元素,这里选择点击第三个

2.5元素定位

层级定位

找子元素

找同级元素

找父级元素(父级很慢建议不要用)

相对定位

这种方式速度较慢

2.6事件操作

点击 

 

滑动

输入 

2.7等待

2.8获取提示语

3.报错大全

3.1adb无法使用,提示error: unknown host service的解决办法

uiautomator2是python语言实现的一个app自动化测试框架,weditor是python版的uiautomator2中的一个元素定位工具。
下面是我在使用weditor中遇到的一个报错,自己给自己挖的坑,含泪也要踩完。。。
1、首先通过adb devices命令能够识别到至少一个android设备【我这里使用的是雷电模拟器v4.0.22】,
在cmd里面输入adb devices

2、确保设备当前没有被任何其它的应用程序所占用,占用的话需要关闭其他应用,

3、继续在cmd里输入weditor,稍等片刻会打开一个浏览器,如图

WEditor页面

4、竟然报错了 adbutils.errors.AdbError:unknown host service

报错unknown host service

解决方法一

看报错是adb的问题,但是不知道怎么下手,多次尝试重启电脑、更新adb都没有解决,后来经一位大佬提醒,在cmd里面 "where adb"看看有几个adb,如图:

"where adb"

瞬间恍然大悟,原来是之前给自己挖了一个大坑,两个地方都有adb,于是果断删除第一个adb,重新走了一遍流程,终于成功了

连接成功的图片,有一个麦穗标识

解决方法二

使用adb时需要5037端口是空闲的,此时只需要辨别电脑的5037端口被哪个应用程序占用即可。

1. 打开命令行,输入命令:netstat -ano |findstr "5037"

 2、查看到对应的进程的PID是7952

Ctrl+alt+delete,打开任务管理器,查看是哪个进程占用了7952

 这里是sjk_daemon.exe(百度到是金山手机助手)占用了此进程,需要将该进程

3、结束该进程


4、如果发现一个进程,多次关闭无法关闭,可以尝试卸载该应用最后,如果还是无法连接设备,提示devices notfound,可以尝试如下命令:

adb kill-server

adb start-server

adb remount

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不努力谁会可怜你?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值