python ui自动化测试问题求解!

车机自动化测试时,频繁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秒,你可以根据需要调整这个时间

# ...其它代码...

以上只是一种可能的解决方案,你还需要根据实际情况进行调整和优化。