簡體   English   中英

當應用程序在設備上運行時,無法獲取uiautomator工具中的元素

[英]Unable to get the elements in uiautomator tool when the app is running on the device

我有一個設置,我的電腦中的Web應用程序正在訪問連接設備上運行的應用程序信息。(通過USB調試)。 並持續將應用程序數據發送到Web應用程序(PC)。

我正在使用selenium(web GUI)和appium(設備)自動執行此操作以進行自動化測試。

問題:一旦應用程序在設備中啟動並與Web應用程序通信(在我的PC中),我無法從uiautomator.bat工具連接到設備。 得到以下錯誤。 是否有針對此問題的解決方法。

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

C:\\ Users \\ sat_yug \\ android-sdks \\ 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 devices log ---------------------

C:\\ Users \\ sat_yug \\ android-sdks \\ platform-tools> adb devices附加的設備列表adb服務器已過期。 kill ...錯誤:無法安裝smartsocket監聽器:無法綁定到127.0.0.1:5037:通常只允許使用每個套接字地址(protocol / n \\ network address / port)。 (10048)無法從ADB Server讀取ok *無法啟動守護程序*錯誤:無法連接到守護程序


我剛剛為我解決了這個問題,所以即使問題很老,我還是想分享一下。 簡單地重新啟動adb是行不通的。 使用管理員權限打開命令提示符並執行以下命令:

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.所以這個進程必須DIE 如果您這樣做,會發生什么:

taskkill /F /PID 3408

之后你就可以做到

adb kill-server
adb start-server

重新啟動adb服務器,最有可能的是,您的adb將成功啟動。

更新:

我制作了這個小蝙蝠文件,以便更容易,因為這種情況經常發生。 確保

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

根據這個問題的答案,您可能會安裝兩個版本的adb。

嘗試以下內容(引自同一篇文章檢查是否有多個版本)並刪除不需要的版本。

其中adb.exe

您可以嘗試的另一個選項是在錯誤點之前或批處理文件執行開始時終止並啟動adb服務器。

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

我有同樣的問題。 解:

從1台機器登錄adb shell並運行

adb start-server

現在嘗試從其他機器連接到同一設備,您將能夠成功連接!

在我的情況下,2個連接是:USB和wifi。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM