openatx / uiautomator2

Android Uiautomator2 Python Wrapper
MIT License
6.38k stars 1.37k forks source link

通过为JsonRpc添加WebSocket通迅方式加快速度 #907

Closed wukan1986 closed 3 months ago

wukan1986 commented 1 year ago

本人的需求是快速的关闭弹出的对话框。并且弹出的对话框还有好几种,需要判断对话框中的特殊控件或文字。 实际使用时,发现弹出的对话框关闭明显很慢。认真研究后,感觉是http请求比较占用时间,很多操作的请求还有多个。

例如: get_text会产生两条http请求

{'jsonrpc': '2.0', 'id': 'dc0ddce33a1139908a05a3efd6333316', 'method': 'waitForExists', 'params': ({'mask': 2097152, 'childOrSibling': [], 'childOrSiblingSelector': [], 'resourceId': 'com.hexin.plat.android:id/auto_stockcode'}, 3000)}
{'jsonrpc': '2.0', 'id': '23d3a5bbb68cc3990b66e93c6d4677ef', 'method': 'getText', 'params': ({'mask': 2097152, 'childOrSibling': [], 'childOrSiblingSelector': [], 'resourceId': 'com.hexin.plat.android:id/auto_stockcode'}, '000858')}

而click更是会产生3条

{'jsonrpc': '2.0', 'id': '1ea1fda514a2dcd5cb59a7471867d230', 'method': 'waitForExists', 'params': ({'mask': 2097152, 'childOrSibling': [], 'childOrSiblingSelector': [], 'resourceId': 'com.hexin.plat.android:id/auto_stockcode'}, 3000)}
{'jsonrpc': '2.0', 'id': '2ad8679f39b8e281f465dc88a4cc551d', 'method': 'objInfo', 'params': ({'mask': 2097152, 'childOrSibling': [], 'childOrSiblingSelector': [], 'resourceId': 'com.hexin.plat.android:id/auto_stockcode'},)}
{'jsonrpc': '2.0', 'id': '7df4ba7b15044ea06418714d4d2bc417', 'method': 'click', 'params': (102.0, 317.0)}

如果提供一个开关,默认用http模式,设置后用websocket模式,这样老程序不用做变动,新程序还能提速

codeskyblue commented 5 months ago

websocket暂时没必要,目前其实很快了。需要修改的是哪个弹窗逻辑