USB:usb_device_handle_win.cc:1020在Windows 10上使用Selenium的ChromeDriver v87 / Chrome v87无法从节点连接错误中读取描述符

wwtsj6pe  于 2022-12-16  发布在  Go
关注(0)|答案(6)|浏览(335)

我们最近使用ChromeDriver v87.0.4280.20和Chrome v87.0.4280.66(官方版本)(64位)升级了我们的 Windows 10 测试环境,升级后,即使是最小的程序也会生成此错误日志:

[9848:10684:1201/013233.169:ERROR:device_event_log_impl.cc(211)] [01:32:33.170] USB: usb_device_handle_win.cc:1020 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F)

最小代码块:

from selenium import webdriver

options = webdriver.ChromeOptions() 
options.add_argument("start-maximized")
driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
driver.get('https://www.google.com/')

控制台输出:

DevTools listening on ws://127.0.0.1:64170/devtools/browser/2fb4bb93-79ab-4131-9e4a-3b65c08dbffb
[9848:10684:1201/013233.169:ERROR:device_event_log_impl.cc(211)] [01:32:33.170] USB: usb_device_handle_win.cc:1020 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F)
[9848:10684:1201/013233.172:ERROR:device_event_log_impl.cc(211)] [01:32:33.173] USB: usb_device_handle_win.cc:1020 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F)

有没有人面临同样的问题?ChromeDriver/chromev 87相对于ChromeDriver/chromev 86有没有什么变化?有什么线索吗?

jtjikinw

jtjikinw1#

我对日志垃圾邮件表示歉意。如果您在连接WebUSB设备时没有遇到问题,您可以忽略这些警告。这些警告是由Chrome试图读取当前挂起的USB设备的属性而触发的。

gopyfrb3

gopyfrb32#

但是,可以通过简单的 hack(即通过 add_experimental_option() 添加参数)抑制这些日志消息出现在控制台上,如下所示:

options.add_experimental_option('excludeSwitches', ['enable-logging'])

代码块:

from selenium import webdriver

options = webdriver.ChromeOptions() 
options.add_argument("start-maximized")
# to supress the error messages/logs
options.add_experimental_option('excludeSwitches', ['enable-logging'])
driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
driver.get('https://www.google.com/')

vd2z7a6w

vd2z7a6w3#

经过相当多的讨论,文档和Chromium问题在这里是与日志消息的表面化相关的细节:

[9848:10684:1201/013233.169:ERROR:device_event_log_impl.cc(211)] [01:32:33.170] USB: usb_device_handle_win.cc:1020 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F)

详情

这一切都始于 chromium 问题Remove WebUSB's dependency on libusb on Windows的报告:

  • 对于Linux(可能也是Mac),WebUSB通知和通信都能正常工作(在udev规则中允许用户访问设备之后)。
  • 对于Windows,libusb似乎只能与非标准的WinUsb驱动程序(https://github.com/libusb/libusb/issues/255)一起工作。

当硬件被插入并且VID/PID对系统未知时,windows 10正确地加载CDC部分的CDC驱动程序和WebUSB部分的WinUSB驱动程序(版本10)(没有红色标记)。然而,似乎chrome从来没有找到设备,直到我手动在接口上强制旧的WinUSB驱动程序(版本6 -可能也修改了)。
该解决方案以逐步方式实施,如下所示:
1.在新的Windows USB后端开始支持某些传输
1.修复新Windows USB后端中的批量/中断传输
1.[usb]从Windows上的集线器驱动程序读取BOS描述符
1.[usb]在Windows上枚举期间收集所有复合设备路径
1.[usb]删除UsbServiceWin帮助函数中的参数
1.[usb]在新的Windows后端支持复合设备
1.[usb]在Windows枚举USB功能时检测它们
1.[usb]支持多功能复合设备
1.[usb]保持接口请求,直到Windows枚举函数
1.[usb]将方向参数添加到ClearHalt
1.[usb]计数对WINUSB_INTERFACE_HANDLE的引用
1.[usb]在Windows后端实现阻止操作
这些更改确保了新的后端已准备就绪,可以通过Chrome Canary和chrome-dev-channel进行测试,您可以通过以下方式手动访问:

chrome://flags#enable-new-usb-backend

提交的更多变更请求如下:

  • [usb]将对SetupDiGetDeviceProperty的调用标记为可能阻塞:根据挂起报告,此函数执行的RPC调用可能需要一些时间才能完成。使用base::ScopedBlockingCall标记调用,以便线程池知道此任务可能会忙碌一段时间。
  • 变体:在现场试验测试配置中启用NewUsbBackend:此标志是实验性的,因为β通道使用此变更配置作为测试的默认值。

由于新后端的实验性启动看起来很稳定,最终默认启用了这些配置,以便通过usb向Chrome 87的所有用户推出更改:默认情况下启用新的Windows USB后端。Revision/Commit
这个想法是一旦这个配置成为默认的几个里程碑,* chrome 团队 * 将开始删除Windows特定的代码从旧的后端和删除标志。
前方的路

  • Chromium团队 * 已经合并了revision/commit,以延长Chrome v90中的新USB后端标志过期时间,该标志即将发布。

更新

根据@ReillyGrant的[Committer,谷歌浏览器的WebDriver]评论:

  • ...”最好降低这些消息的日志级别,这样它们在默认情况下就不会出现在控制台上,但我们还没有部署代码来执行此操作...“*

参考文献

您可以在以下内容中找到一些相关的详细讨论:

  • 无法从节点连接读取描述符:在Windows操作系统上使用ChromeDriver Selenium时,连接到系统的设备无法正常工作
  • 无法从节点连接读取描述符:通过Selenium使用ChromeDriver Chrome时,连接到系统的设备无法正常工作
bvhaajcl

bvhaajcl5#

对我有效的部分解决方案
我也收到了这个错误。它让我的程序停止运行。
1.我拔掉了所有的USB设备,运行程序,没有错误。
1.重新插入设备,运行程序。我仍然收到错误,但是,程序完成没有错误停止程序。

e0bqpujr

e0bqpujr6#

注意:对于Windows 10上的WebdriverIO,这会为我抑制错误消息:

"goog:chromeOptions": { "excludeSwitches": ["enable-logging"] }

相关问题