openatx / uiautomator2

Android Uiautomator2 Python Wrapper
MIT License
6.18k stars 1.35k forks source link

执行print(d.info)提示adbutils.errors.AdbError: cannot bind listener: cannot bind to 127.0.0.1:60941: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 (10048) #968

Closed NewFoolish closed 2 months ago

NewFoolish commented 2 months ago

已在Issues中检索,未见相同错误 - 手机型号 三星Galaxy 22

android版本: android 13

- uiautomator2的版本号 Name: uiautomator2 Version: 3.0.11 Summary: uiautomator for android device Home-page: https://github.com/openatx/uiautomator2 Author: codeskyblue Author-email: codeskyblue@gmail.com License: MIT Location: /home/user/.local/lib/python3.10/site-packages Requires: adbutils, Deprecated, lxml, Pillow, requests, retry Required-by:

- 源码脚本如下(在wsl2下执行,Python版本 3.10.12)

#!/usr/bin/python

import uiautomator2 as u2

def test_simple():
    d = u2.connect('my-serial') # my phone’s device id
    print(d.info)

if __name__ == "__main__":
    test_simple()

- 相关日志(Python控制台错误信息, adb logcat完整信息, atxagent.log日志) Traceback (most recent call last): File "/mnt/e/workspace/Python/uitest/./uitest.py", line 12, in test_simple() File "/mnt/e/workspace/Python/uitest/./uitest.py", line 8, in test_simple print(d.info) File "/home/user/.local/lib/python3.10/site-packages/uiautomator2/init.py", line 1040, in info _info = super().info File "/home/user/.local/lib/python3.10/site-packages/uiautomator2/init.py", line 139, in info return self.jsonrpc.deviceInfo(http_timeout=10) File "/home/user/.local/lib/python3.10/site-packages/uiautomator2/init.py", line 179, in call return self.server.jsonrpc_call(self.method, params, http_timeout) File "/home/user/.local/lib/python3.10/site-packages/uiautomator2/core.py", line 274, in jsonrpc_call return _jsonrpc_call(self._dev, method, params, timeout, self._debug) File "/home/user/.local/lib/python3.10/site-packages/uiautomator2/core.py", line 122, in _jsonrpc_call r = _http_request(dev, "POST", "/jsonrpc/0", payload, timeout=timeout, print_request=print_request) File "/home/user/.local/lib/python3.10/site-packages/uiautomator2/core.py", line 89, in _http_request lport = dev.forward_port(9008) File "/home/user/.local/lib/python3.10/site-packages/adbutils/_device.py", line 262, in forward_port self.forward("tcp:" + str(local_port), remote) File "/home/user/.local/lib/python3.10/site-packages/adbutils/_device.py", line 244, in forward c.check_okay() # this OKAY means message was received File "/home/user/.local/lib/python3.10/site-packages/adbutils/_adb.py", line 147, in check_okay raise AdbError(self.read_string_block()) adbutils.errors.AdbError: cannot bind listener: cannot bind to 127.0.0.1:60941: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 (10048)

codeskyblue commented 2 months ago

可以稳定复现吗

NewFoolish commented 2 months ago

可以稳定复现吗

目前在我在wsl2下是可以稳定复现的

另外我在cmd端执行就是正常的(Python 3.11.1) 输出如下: {'currentPackageName': 'com.tencent.mm', 'displayHeight': 2340, 'displayRotation': 0, 'displaySizeDpX': 411, 'displaySizeDpY': 891, 'displayWidth': 1080, 'productName': 'g0qzcx', 'screenOn': True, 'sdkInt': 34, 'naturalOrientation': True}

NewFoolish commented 2 months ago

可以稳定复现吗

目前在我在wsl2下是可以稳定复现的

另外我在cmd端执行就是正常的(Python 3.11.1) 输出如下: {'currentPackageName': 'com.tencent.mm', 'displayHeight': 2340, 'displayRotation': 0, 'displaySizeDpX': 411, 'displaySizeDpY': 891, 'displayWidth': 1080, 'productName': 'g0qzcx', 'screenOn': True, 'sdkInt': 34, 'naturalOrientation': True}

我怀疑可能是adb环境的问题,在wsl2下我是通过软链接的形式使用windows下的adb环境。这个问题先关闭吧,目前在windows下是可正常执行的

codeskyblue commented 2 months ago

OK, 如何有新的发现可以在reopen一下