车机自动化测试时,频繁adb shell start 各种activity,然后长时间的执行,就会报错:
E http.client.RemoteDisconnected: Remote end closed connection without response
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
E ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接
这种问题可能是由于你的代码频繁地创建和关闭网络连接,而服务器或 Android 设备没有足够的时间来清理这些关闭的连接,导致资源耗尽,无法创建新的连接。
一个可能的解决方案是使用连接池或者复用一个连接,而不是每次都创建一个新的连接。在 adb shell 的场景中,你可以尝试保持 adb 连接的开启,并复用这个连接。
另一个可能的解决方案是在每次创建新的连接之前加入一些延迟,给服务器或 Android 设备一些时间来清理关闭的连接。例如,你可以在每次运行 adb shell 命令后,使用 Python 的 time.sleep 函数暂停一段时间。
下面是一个简单的例子:
import time
import subprocess
# ...其它代码...
# 开始循环
for i in range(n): # n是你需要循环的次数
# 执行adb shell命令
subprocess.run(['adb', 'shell', 'am', 'start', '-n', 'com.example.myapp/.MainActivity'])
# 暂停一段时间
time.sleep(1) # 暂停1秒,你可以根据需要调整这个时间
# ...其它代码...
以上只是一种可能的解决方案,你还需要根据实际情况进行调整和优化。