smart-test-ti / SoloX

💯SoloX - Real-time collection tool for Android/iOS performance data.(Android性能测试android performance\iOS性能测试ios performance\移动端性能测试mobile performance\APP性能测试app performance\app性能测试工具)
https://smart-test-ti.github.io/solox
MIT License
984 stars 174 forks source link

'NoneType' object has no attribute 'group' #240

Closed Zolliner closed 10 months ago

Zolliner commented 10 months ago

[E 231123 14:43:32 apm:264] 'NoneType' object has no attribute 'group' Traceback (most recent call last): File "C:\Users\lizhendong\miniconda3\envs\testSoloX\Lib\site-packages\solox\public\apm.py", line 250, in getAndroidNet sendNum_pre = round(float(float(m_pre.group(2)) / 1024), 2) ^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'group'

一直报这个错误

Zolliner commented 10 months ago

debug发现,output_pre是空字符串 找到最终执行的命令是 adb -s 155dd78c shell cat /proc/6469:com.tencent.mm/net/dev |findstr rmnet0 输出是 cat: /proc/6469:com.tencent.mm/net/dev: No such file or directory

mutexz commented 10 months ago

debug发现,output_pre是空字符串 找到最终执行的命令是 adb -s 155dd78c shell cat /proc/6469:com.tencent.mm/net/dev |findstr rmnet0 输出是 cat: /proc/6469:com.tencent.mm/net/dev: No such file or directory

命令拼接的不对,应该是/proc/{pid}/net/dev,此处应为/proc/6469/net/dev

Zolliner commented 10 months ago

debug发现,output_pre是空字符串 找到最终执行的命令是 adb -s 155dd78c shell cat /proc/6469:com.tencent.mm/net/dev |findstr rmnet0 输出是 cat: /proc/6469:com.tencent.mm/net/dev: No such file or directory

命令拼接的不对,应该是/proc/{pid}/net/dev,此处应为/proc/6469/net/dev

修改命令后,执行 `adb -s 155dd78c shell cat /proc/6469/net/dev' ,输出如下,没有找到 rmnet0 Snipaste_2023-11-23_15-17-04

rafa0128 commented 10 months ago

应该不会出现这种情况吧,你界面截图我看看你选择的进程是长啥样的?

rafa0128 commented 10 months ago

rmnet0是移动网络,界面关掉wifi开关才会去统计

Zolliner commented 10 months ago

应该不会出现这种情况吧,你界面截图我看看你选择的进程是长啥样的?

软件是小而美的微信,手机是红米K50Ultra,MIUI14.0.11,安卓13

pid是通过示例里的d.getPid()获取的,如图 image

顺便说一句,我刚刚意识到可以选取WiFi的数据,于是设置 flow = apm.collectFlow(wifi=True) ,并且连接WiFi就可以用了

rafa0128 commented 10 months ago

哦你是用api是吧,要自己处理一下,如果是用界面测试不会有这种情况

Zolliner commented 10 months ago

哦你是用api是吧,要自己处理一下,如果是用界面测试不会有这种情况

并不是哦,如图,我又在界面测试了抖音的效果,网络和FPS没有数据,终端疯狂刷错误🤣 image

image

mutexz commented 10 months ago

哦你是用api是吧,要自己处理一下,如果是用界面测试不会有这种情况

我用华为Mate50Pro测试了一下移动网络的情况,确实存在没有rmnet0的参数输出。 image

rafa0128 commented 10 months ago

哦你是用api是吧,要自己处理一下,如果是用界面测试不会有这种情况

我用华为Mate50Pro测试了一下移动网络的情况,确实存在没有rmnet0的参数输出。 image

我试了是正常的,你手机有没有关掉wifi?界面也关掉wifi开关

rafa0128 commented 10 months ago

哦你是用api是吧,要自己处理一下,如果是用界面测试不会有这种情况

并不是哦,如图,我又在界面测试了抖音的效果,网络和FPS没有数据,终端疯狂刷错误🤣 image

image

你是自己调试,还是用python -m solox?

Zolliner commented 10 months ago

哦你是用api是吧,要自己处理一下,如果是用界面测试不会有这种情况

并不是哦,如图,我又在界面测试了抖音的效果,网络和FPS没有数据,终端疯狂刷错误🤣 image image

你是自己调试,还是用python -m solox?

红米K50Ultra,MIUI14.0.11,安卓13,流量环境下,使用 python -m solox执行。

顺便说一句,我重写了builtin_adb_path() 函数,因为它一直调用solox自带的。

def builtin_adb_path():
    return r"D:\01_software\platform-tools\adb.exe"
mutexz commented 10 months ago

哦你是用api是吧,要自己处理一下,如果是用界面测试不会有这种情况

我用华为Mate50Pro测试了一下移动网络的情况,确实存在没有rmnet0的参数输出。 image

我试了是正常的,你手机有没有关掉wifi?界面也关掉wifi开关

哦你是用api是吧,要自己处理一下,如果是用界面测试不会有这种情况

我用华为Mate50Pro测试了一下移动网络的情况,确实存在没有rmnet0的参数输出。 image

我试了是正常的,你手机有没有关掉wifi?界面也关掉wifi开关

都关掉了,界面和手机WIFI都关闭了。4G网络。是不是这个参数也有Android系统版本的差异?

mutexz commented 10 months ago

哦你是用api是吧,要自己处理一下,如果是用界面测试不会有这种情况

并不是哦,如图,我又在界面测试了抖音的效果,网络和FPS没有数据,终端疯狂刷错误🤣 image image

你是自己调试,还是用python -m solox?

红米K50Ultra,MIUI14.0.11,安卓13,流量环境下,使用 python -m solox执行。

顺便说一句,我重写了builtin_adb_path() 函数,因为它一直调用solox自带的。

def builtin_adb_path():
    return r"D:\01_software\platform-tools\adb.exe"

这里可以做一个兜底判断,正则匹配失败的话,直接返回0和异常信息,这样控制台也不打印报错

rafa0128 commented 10 months ago

界面是返回0啊,异常信息是给开发者看的。我的设备没出现你们的问题。不要改solox的代码,换一台手机试试。

Zolliner commented 10 months ago

我还原了代码也是同样的问题,终端和界面,在安卓13下无法获取流量的数据,可能是安卓13修改了某些内容。 所以,较高版本的安卓可能需要在WiFi下测试网络比较合适

mutexz commented 10 months ago

我还原了代码也是同样的问题,终端和界面,在安卓13下无法获取流量的数据,可能是安卓13修改了某些内容。 所以,较高版本的安卓可能需要在WiFi下测试网络比较合适

我这一样,打算自行搜索一下这个问题

rafa0128 commented 10 months ago

如果找出问题,提个PR看看,我没手机搞了。不影响旧版本就行,应该是用rmnet_data的数据,兼容一下