uiautomator2突然提示unknown host service

問題現象

一直用的好好的WEditor定位元素,今天突然不好用了

問題定位

通過跑出的異常的堆棧信息來定位:
Traceback (most recent call last):
File “C:\Python37\lib\site-packages\weditor\web\handlers\page.py”, line 153, in post
id = connect_device(platform, device_url)
File “C:\Python37\lib\site-packages\weditor\web\device.py”, line 101, in connect_device
d = AndroidDevice(device_url)
File “C:\Python37\lib\site-packages\weditor\web\device.py”, line 24, in init
d = u2.connect(device_url)
File "C:\Python37\lib\site-packages\uiautomator2_init
.py", line 1794, in connect
return connect_usb(addr)
File “C:\Python37\lib\site-packages\uiautomator2_init_.py”, line 1835, in connect_usb
return Device(serial)
File “C:\Python37\lib\site-packages\uiautomator2_init_.py”, line 235, in init
wlan_ip = self.wlan_ip
File “C:\Python37\lib\site-packages\uiautomator2_init_.py”, line 404, in wlan_ip
ip = self.http.get("/wlan/ip").text.strip()
File “C:\Python37\lib\site-packages\requests\sessions.py”, line 543, in get
return self.request(‘GET’, url, **kwargs)
File “C:\Python37\lib\site-packages\uiautomator2_init_.py”, line 198, in request
url = self.client.path2url(url)
File "C:\Python37\lib\site-packages\uiautomator2_init
.py", line 261, in path2url
return urlparse.urljoin(self.get_atx_agent_url(), path)
File "C:\Python37\lib\site-packages\uiautomator2_init
.py", line 245, in get_atx_agent_url
lport = self.adb_device.forward_port(7912) # this method is so fast, only take 0.2ms
File "C:\Python37\lib\site-packages\adbutils_init
.py", line 473, in forward_port
for f in self.forward_list():
File "C:\Python37\lib\site-packages\adbutils_init
.py", line 305, in forward_list
c.check_okay()
File "C:\Python37\lib\site-packages\adbutils_init
.py", line 155, in check_okay
raise AdbError(self.read_string())
adbutils.errors.AdbError: unknown host service

  1. 看堆棧信息是找不到設備,然後用adb命令查看,結果很神奇的是可以拿到設備列表。。。
  2. 然後再繼續查詢資料,網上的建議有幾種,第一:是不是有多個adb,排除;第二:是不是該安裝的apk有沒有安裝的,排除;
  3. 那就奇怪了,然後繼續看問題,既然是找不到設備,會不會是負責adb通訊的adb命令模塊有問題
  4. 開始嘗試將adb更換爲官方的adb,之前是簡易的adb命令,就是隻有幾個dll和adb.exe的那個版本
  5. 替換爲https://dl.google.com/android/repository/platform-tools_r29.0.5-windows.zip
  6. 並設置爲環境變量,再次執行python -m uiautomator2 init,結果就成功了

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章