问题现象
压测开始时,uiautomator运行一切正常
当跑了一段时间后,脚本突然报找不到元素
-32002 Client error: <> data: Selector [resourceId='android:id/title', text='Network & internet'], method: None
而安卓设备又正好停留在当前元素的界面,手动调试一番仍然找不到元素
先验证了uiautomator相关的press("home")方法可以下发,没有报错,界面也没有响应;然后pyinstaller -m weditor运行查看页面时,刷新实时界面时,报了以下问题
C:\Users\test>python -m weditor
listening on http://10.38.180.201:17310
[I 240619 13:34:21 web:2344] 304 GET / (::1) 6.00ms
[I 240619 13:34:22 web:2344] 304 GET /api/v1/version (::1) 1.00ms
[I 240619 13:34:22 shell:47] Started drain subprocess stdout in thread
[I 240619 13:34:22 web:2344] 101 GET /ws/v1/python (::1) 293.51ms
[I 240619 13:34:22 shell:189] create process pid: 35128
[I 240619 13:34:29 web:2344] 200 POST /api/v1/connect (::1) 2282.54ms
[I 240619 13:34:31 web:2344] 200 POST /api/v1/connect (::1) 2296.53ms
[W 240619 13:34:31 web:2344] 404 GET /undefined (::1) 0.00ms
[I 240619 13:34:31 page:207] Serial: Android:014000
[I 240619 13:34:32 web:2344] 200 GET /api/v1/devices/Android%3A014000/screenshot (::1) 1070.87ms
[W 240619 13:34:35 __init__:492] [pid:35704] [014000] jsonrpc call got: -32001 Jsonrpc error: <java.lang.NullPointerException> data: java.lang.NullPointerException: Attempt to read from field 'int android.accessibilityservice.AccessibilityServiceInfo.flags' on a null object reference in method 'void androidx.test.uiautomator.UiDevice.setCompressedLayoutHeirarchy(boolean)'
at androidx.test.uiautomator.UiDevice.setCompressedLayoutHeirarchy(UiDevice.java:234)
at com.github.uiautomator.stub.AutomatorServiceImpl.dumpWindowHierarchy(AutomatorServiceImpl.java:295)
at com.github.uiautomator.stub.AutomatorServiceImpl.dumpWindowHierarchy(AutomatorServiceImpl.java:284)
at java.lang.reflect.Method.invoke(Native Method)
at com.googlecode.jsonrpc4j.JsonRpcBasicServer.invoke(JsonRpcBasicServer.java:467)
at com.googlecode.jsonrpc4j.JsonRpcBasicServer.handleObject(JsonRpcBasicServer.java:352)
at com.googlecode.jsonrpc4j.JsonRpcBasicServer.handleJsonNodeRequest(JsonRpcBasicServer.java:283)
at com.googlecode.jsonrpc4j.JsonRpcBasicServer.handleRequest(JsonRpcBasicServer.java:251)
at com.github.uiautomator.stub.AutomatorHttpServer.serve(AutomatorHttpServer.java:100)
at fi.iki.elonen.NanoHTTPD.serve(NanoHTTPD.java:2244)
at fi.iki.elonen.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:945)
at fi.iki.elonen.NanoHTTPD$ClientHandler.run(NanoHTTPD.java:192)
at java.lang.Thread.run(Thread.java:1012)
, method: dumpWindowHierarchy
[D 240619 13:34:37 __init__:661] [pid:35704] [014000] kill process(ps): uiautomator
[E 240619 13:34:38 web:1871] Uncaught exception GET /api/v2/devices/Android%3A014000/hierarchy (::1)
同时找来另一台设备,相同的脚本正常测试无异常;于是从出问题手机内部寻找问题
解决方式
考虑到weditor是atx生态下的工具,打开手机内部的atx应用,点击”刷新服务状态“发现返回信息为false,重新启动uiautomator后,一切正常了,原来问题就出在atx上面
找到了解决办法,但是哪一步导致atx uiautomator状态变成false的还是不清楚