Open GlodenBoy opened 7 years ago
使用的是wetest_demo还是自己的游戏?
接入的自己的游戏,可能是因为在频繁的获取控件?
另外,还有一个问题是 有些NGUI有些控件是可以直接点击的,有些控件却不行,用View看到的屏幕坐标是-20.0或者 0,这种情况一般是为啥,也没有包装过啊。
频繁获取控件大概有多频繁?只集成SDK,不获取控件,正常游戏会不会明显发烫?
NGUI,我们会优先获取BoxColider所在的位置。BoxColider使用的是WorldToScreenPoint来获取在屏幕上的位置,返回的z坐标是个浮点数。我们SDK中设置了一个阀值,认为小于阀值的是不在摄像机内的。这个阀值可能设置有问题,属于bug,需要进行调整。
频繁获取 就是用View 去频繁 查找控件,实际上也是在频繁获取。这段时间内会烫的不行。
另外 top_activity=device.get_top_package_activity() 这个会抛出异常。
2016-12-08 15:46:46,729 - WARNING - device.py:168 - wetest - Traceback (most recent call last):
File "D:\GAutomator-master\wpyscripts\wetest\device.py", line 165, in get_top_package_activity
return TopActivity("", self.ui_device.info["currentPackageName"])
File "D:\GAutomator-master\libs\uiauto\uiautomator.py", line 638, in info
return self.server.jsonrpc.deviceInfo()
File "D:\GAutomator-master\libs\uiauto\uiautomator.py", line 467, in wrapper
return _JsonRPCMethod(url, method, timeout, False)(*args, **kwargs)
File "D:\GAutomator-master\libs\uiauto\uiautomator.py", line 462, in wrapper
return _method_obj(*args, **kwargs)
File "D:\GAutomator-master\libs\uiauto\uiautomator.py", line 116, in __call__
timeout=self.timeout)
File "D:\GAutomator-master\libs\urllib3\poolmanager.py", line 248, in urlopen
response = conn.urlopen(method, u.request_uri, **kw)
File "D:\GAutomator-master\libs\urllib3\connectionpool.py", line 668, in urlopen
release_conn=release_conn, **response_kw)
File "D:\GAutomator-master\libs\urllib3\connectionpool.py", line 668, in urlopen
release_conn=release_conn, **response_kw)
File "D:\GAutomator-master\libs\urllib3\connectionpool.py", line 668, in urlopen
release_conn=release_conn, **response_kw)
File "D:\GAutomator-master\libs\urllib3\connectionpool.py", line 640, in urlopen
_stacktrace=sys.exc_info()[2])
File "D:\GAutomator-master\libs\urllib3\util\retry.py", line 287, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
MaxRetryError: HTTPConnectionPool(host='127.0.0.1', port=19008): Max retries exceeded with url: /jsonrpc/0 (Caused by ProtocolError('Connection aborted.', error(10054, '')))
这2天一直在测试,其中只有获取到坐标的NGUI可以点击,其他的image 和 lable text 一律获取不到,这些 通常有个特点就是坐标全是为0.
弹出框处理(获取可交互节点) :获取的 elements 一直为空。(可能我操作的方式不对?)
弹出框处理(获取可交互节点) ,boxcolider对应的屏幕坐标获取出错了。这个接口获取的内容肯定就有问题了。这个接口还有一种情况会获取不到,NGUI的源码是修改过的。
@luoxiaoji 1、获取不准的NGUI的,这个版本我还是第一次。我会立马改个版本出来,你的邮箱发我一下可否wukenaihesos@gmail.com
2、另外 top_activity=device.get_top_package_activity() 这个会抛出异常。uiautomator没起来是这种现象,adb forward失败也是这种现象。
启动uiautomator的代码为
adb shell uiautomator runtest uiautomator-stub.jar -c com.github.uiautomatorstub.Stub
如果正常启动,会在手机端启动一个监听端口
adb shell netstat |find "9008"
OK ,邮箱已发,uiautomator是没启起来,好像是和View 有冲突,我先开着那个,会占用端口,导致无法启动。
@luoxiaoji UIAutomator一个手机只能起一个。起不来的原因,1、可能有其他启动了uiautomator。2、uiautomator会使用accessibilityservice这个可能被其他人占用,比如说辅助程序。还有比如说豌豆荚之类的,为了给你静默安装app,也会偷偷占用
1.刚才和我们项目组的人交流了一下,我们的NGUI是包装过的,但是没有改过源码,不知道这点是否有影响 boxcolider,但是其他的包装过的的确有大部分UI是可以获取到的。
2.test_travel() 感觉比较费啊,直接调用的话,屏幕只会点击一个固定的坐标点,其他的可获取的UI 根本不会点击,同样不知道什么原因.
@luoxiaoji wetest_demo我们的确一点都没优化过。SDK性能的优化是我们一直的追求,因为性能自动化其实是手游自动化里面非常常用的一个场景。
这份是我们使用wetest_demo测试的性能消耗情况。find系列跟GameObject有直接关系
接口 | 引擎 | 通过 | python性能(ms) | Sdk性能(ms) |
---|---|---|---|---|
call_registered_handler | UGUI | 通过 | 21.000014 | 3 |
call_registered_handler | NGUI | 通过 | 19.99998093 | 1 |
click | UGUI | 通过 | 84.0001 | |
click | NGUI | 通过 | 85.99996567 | |
Click_position | UGUI | 通过 | 61.0001 | |
Click_position | NGUI | 通过 | 65.00005722 | |
Find_element | UGUI | 通过 | 29.99997139 | 0 |
Find_element | NGUI | 通过 | 38.00010681 | 1 |
Find_elements_path | UGUI | 通过 | 17.00000763 | 2-6 |
Find_elements_path | NGUI | 通过 | 21.19998932 | 2 |
Get_scene | UGUI | 通过 | 13.00001144 | 5 |
Get_scene | NGUI | 通过 | 15.0001049 | 1 |
Get_element_bound | UGUI | 通过 | 23.00000191 | 1 |
Get_element_bound | NGUI | 通过 | 19.99998093 | 2 |
get_element_image | UGUI | 通过 | 13.99993896 | 2 |
get_element_image | NGUI | 通过 | 13.00001144 | 1 |
get_element_text | UGUI | 通过 | 20.99990845 | 1 |
get_element_text | NGUI | 通过 | 16.99995995 | 1 |
get_registered_handlers | UGUI | 通过 | 13.00001144 | 1 |
get_registered_handlers | NGUI | 通过 | 16.99995995 | 5 |
get_sdk_version | UGUI | 通过 | 12.00008392 | 2 |
get_sdk_version | NGUI | 通过 | 15.99979401 | 1 |
get_touchable_element | UGUI | 通过 | 16.00003242 | 5-10 |
get_touchable_element | NGUI | 通过 | 19.00005341 | 11 |
get_touchable_elements_bound | UGUI | 通过 | 33.99991989 | 5-10 |
get_touchable_elements_bound | NGUI | 通过 | 32.00006485 | 9 |
get_element_world_bound | UGUI | 通过 | 16.00003242 | 1 |
get_element_world_bound | NGUI | 通过 | 46.99993134 | 1 |
input | UGUI | 通过 | 17.99988747 | 1 |
input | NGUI | 通过 | 18.00012589 | 0 |
press 2000ms | UGUI | 通过 | 2032.999992 | |
press 2000ms | NGUI | 通过 | 2036.000013 | |
swipe_position 2000ms | UGUI | 通过 | 2342.000191 | |
swipe_position 2000ms | NGUI | 通过 | 2362.999916 | |
get_component_field | UGUI | 通过 | 13.99993896 | 1 |
get_component_field | NGUI | 通过 | 16.00003242 | 8 |
find_elements_by_component | UGUI | 通过 | 10.99991798 | 5 |
find_elements_by_component | NGUI | 通过 | 27.99987793 |
你误会我的意思了,我是说 test_travel() 这个功能比较废, 在我们的游戏上只会一直点一个10,10的坐标点。
不知道是什么原因,无法获取到屏幕上随机的UI坐标。
另外有部分UI无法获取到坐标的问题 烦请试着优化一版发我测试一下。谢谢了。
调试的时候,手机简直是可以煎鸡蛋了。是否可以优化下发烫呢。