Android 在设备上运行应用程序时,无法获取uiautomator工具中的元素

Android 在设备上运行应用程序时,无法获取uiautomator工具中的元素,android,sockets,usb,automated-tests,appium,Android,Sockets,Usb,Automated Tests,Appium,我的电脑中的web应用程序正在访问连接设备上运行的应用程序信息(通过USB调试)。并将应用程序数据连续发送到Web应用程序(PC) 我正在使用selenium(web GUI)和appium(设备)进行自动化测试 问题:一旦应用程序在设备中启动并与Web应用程序(在我的电脑中)通信,我就无法从uiautomator.bat工具连接到设备。 获取以下错误。是否有解决此问题的方法 --------uiautomator.bat日志----------- C:\Users\sat\u yug\andr

我的电脑中的web应用程序正在访问连接设备上运行的应用程序信息(通过USB调试)。并将应用程序数据连续发送到Web应用程序(PC)

我正在使用selenium(web GUI)和appium(设备)进行自动化测试

问题:一旦应用程序在设备中启动并与Web应用程序(在我的电脑中)通信,我就无法从uiautomator.bat工具连接到设备。 获取以下错误。是否有解决此问题的方法

--------uiautomator.bat日志-----------

C:\Users\sat\u yug\android sdk\tools>uiautomatorviewer.bat 03:57:35 E/DeviceMonitor:Adb连接错误:远程主机强制关闭了现有连接 03:57:36 E/DeviceMonitor:连接尝试:1 03:57:38 E/DeviceMonitor:连接尝试:2 03:57:40 E/DeviceMonitor:连接尝试:3 03:57:42 E/DeviceMonitor:连接尝试:4 03:57:44 E/DeviceMonitor:连接尝试次数:5次 03:58:04 E/DeviceMonitor:Adb连接错误:远程主机强制关闭了现有连接

------------adb设备日志---------------------

C:\Users\sat\u yug\android SDK\platform tools>adb设备 所附设备清单 adb服务器已过期。谋杀。。。 错误:无法安装smartsocket侦听器:无法绑定到127.0.0.1:5037:每个套接字地址只能使用一次(协议/n 网络地址/端口)通常是允许的。(10048) 无法从ADB服务器读取ok *无法启动守护进程* 错误:无法连接到守护进程


根据问题的答案,您可能安装了两个版本的adb

尝试以下内容(引用同一篇文章来检查是否有多个版本)并去掉不需要的版本

其中adb.exe

您可以尝试的另一个选项是在错误点之前或批处理文件开始执行时终止并启动adb服务器

adb kill-server
adb start-server
....
....
//your script here
....
....

我刚刚为我解决了这个问题,所以我想我会和大家分享,尽管这个问题已经很老了。仅仅重启亚洲开发银行是行不通的。打开具有管理员权限的命令提示符并执行以下操作:

netstat -o -n -a | findstr 5037
这将产生一个结果列表。这就是我的情况:

 TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       3408
 TCP    127.0.0.1:5037         127.0.0.1:50018        ESTABLISHED     3408
 TCP    127.0.0.1:5037         127.0.0.1:54507        ESTABLISHED     3408
 TCP    127.0.0.1:5037         127.0.0.1:63330        ESTABLISHED     3408
 TCP    127.0.0.1:5037         127.0.0.1:63332        ESTABLISHED     3408
 TCP    127.0.0.1:50018        127.0.0.1:5037         ESTABLISHED     1664
 TCP    127.0.0.1:54507        127.0.0.1:5037         ESTABLISHED     1664
 TCP    127.0.0.1:63330        127.0.0.1:5037         ESTABLISHED     1664
 TCP    127.0.0.1:63332        127.0.0.1:5037         ESTABLISHED     1664
最右边的一列是进程id(PID)。侦听所需套接字的进程是3408。所以这个过程必须消失!如果你这样做,会发生什么:

taskkill /F /PID 3408
之后你就可以做了

adb kill-server
adb start-server
要重新启动adb服务器,最可能的情况是您的adb将成功启动

更新:

我制作了这个小bat文件以使其更容易,因为这种情况经常发生。确定

1. to place this bat at the same folder as adb.exe 
2. run it as administrator. 
它将直接显示正在使用套接字的PID。键入该PID并按enter键,问题就会消失

netstat -o -n -a | findstr 5037 | findstr LISTENING  
set /p pid=Enter pid to kill:%=%
@echo %pid%
taskkill /F /PID %pid%
adb kill-server
adb start-server
pause

我也有同样的问题。解决方案:

从1台计算机登录到adb外壳并运行

adb start-server
现在尝试从其他机器连接到同一设备,您将能够成功连接


在我的例子中,2个连接是通过:USB和wifi进行的。

也在此处添加bat文件的内容