自动化只是让你关注更应该关注的 不是偷懒
1、安装ADB
地址:SDK 平台工具版本说明 | Android 开发者 | Android Developers
下载对应环境的工具 解压
之后设置环境变量
右键我的电脑->属性 然后按下图顺序 最后添加platform-tools的路径保存即可
设置好后cmd打开命令行
输入adb version
可以查看adb版本信息 ok~
python =3.7
2、安装uiautomator2
python下载uiautomator2包
pip install --pre uiautomator2
使用数据线将手机与电脑相连 使用开发者模式
在电脑命令行输入
python -m uiautomator2 init
进行初始化
注意看提示
如果需要wifi连接 adb需要tcpip连接模式
4.调用adb,连接设备(不必做)
将手机通过USB数据线连接至电脑,打开开发者模式,并开启USB调试(不同手机不同操作,需要自己研究下)
通过 adb devices 命令查看当前手机的连接情
所以在数据线连接时我们需要设定端口(修改端口 默认5555)
adb tcpip 5566adb connect 192.168.1.2:5566
打开ATX 查看IP
5、元素定位@
pip install weditor==0.6.4
pip install -i https://pypi.douban.com/simple weditor
启动 weditor
6、简单举例
import uiautomator2 as ui d = ui.connect("127.0.0.1:11509") # 打开 d(text="移动管理平台").click()
自动安装 两个软件 atx 和com.github.uiautomator.test
7、应用
import json
import uiautomator2 as u2
import time
import pandas as pd
# nova4
# d = u2.connect("JPF4C19321023776")
# reno 9
# d = u2.connect("7L55SOHQ4HKVIJ95")
def login(d):
# d = u2.connect_adb_wifi("192.168.3.223:5555")
d.press("home")
time.sleep(0.5)
d.press("home")
time.sleep(0.5)
d(text="风电移动管理平台").click()
d(resourceId="com.baidu.myapplication:id/btn_login").click()
time.sleep(1)
return d
def opencheck(d):
d.swipe(540, 1068, 540, 302, 0.2)
# 点击巡检
d.xpath('//*[@text="巡检"]').click()
time.sleep(0.5)
# 点击右侧三道杠
d(resourceId="com.baidu.myapplication:id/btn_right").click()
time.sleep(1)
# 点击升压站
if d(text="升压站", instance=1).exists:
d(text="升压站", instance=1).click()
else:
d(text="升压站", instance=0).click()
time.sleep(0.5)
# 点击日期
d(resourceId="com.baidu.myapplication:id/editText4").click()
time.sleep(0.5)
# 确定
d(resourceId="com.baidu.myapplication:id/tv_sure").click()
time.sleep(0.5)
# 再次确定
d(text="确定").click()
time.sleep(0.5)
# 告警确定
d(text="确定").click()
time.sleep(1)
def writedata(d):
# 展开巡检单
d.xpath(
'//*[@resource-id="com.baidu.myapplication:id/layout_root"]/android.widget.LinearLayout[1]/android.widget.RelativeLayout[1]').click()
time.sleep(0.5)
# 日常巡检
wklist = [
['//*[@text="一、220kVGIS"]', 25],
['//*[@text="二、220kV主变"]', 20],
['//*[@text="三、35kV设备"]', 53],
['//*[@text="四、继电保护舱"]', 77],
['//*[@text="五、10kV农网"]', 4],
['//*[@text="六、生活、消防及公用设施"]', 5],
['//*[@text="七、400V低压配电舱"]', 6]
]
data = pd.read_csv("data.csv")
n = 1
for m in range(len(wklist)):
d.xpath(wklist[m][0]).click()
time.sleep(1)
i = 1
while i <= wklist[m][1]:
# 分为两类 是否测量值
print('当前行号', n)
print(data.values[n - 1])
d(resourceId="com.baidu.myapplication:id/tv_sort", text=str(n)).click()
if data.values[n - 1][2] == '测量值':
d(text="合格").click()
# time.sleep(0.2)
print(n, '填入', data.values[n - 1][3])
d(resourceId="com.baidu.myapplication:id/tv_data").send_keys(data.values[n - 1][3])
else:
d(text="合格").click()
# time.sleep(0.2)
d(resourceId="com.baidu.myapplication:id/btn_right").click()
time.sleep(0.2)
## 区域结束+1
print('wklist', wklist[m][1], n, wklist[m][1] == n, m,i)
if i == wklist[m][1]:
n = n + 1
n = n + 1
i = i + 1
d(resourceId="com.baidu.myapplication:id/btn_left").click()
time.sleep(0.2)
# 两项细则巡检
if __name__ == "__main__":
# d = u2.connect("7XM7F6EUPJSOJNXG")
d = u2.connect_adb_wifi("192.168.3.156:42251")
login(d)
opencheck(d)
writedata(d)
1、Uiautomator not starting
先试用adb devices查询到设备
再使用命令python -m uiautomator2 init在模拟器上安装ATX
打开ATX,启动UIautomator,提示Uiautomator not starting,
解决办法:
adb shell chmod 755 /data/local/tmp/atx-agent data/local/tmp/atx-agent version # 查看版本 /data/local/tmp/atx-agent server -d # 启动atx-agent并切换到后台运行
adb 重启
adb kill-server
adb start-server