Python USB:USB\U设备\U句柄\U win.cc:1020无法在Windows10上使用Selenium从ChromeDriver v87/Chrome v87的节点连接错误中读取描述符
最近,我们使用ChromeDriver v87.0.4280.20和Chrome v87.0.4280.66(官方版本)(64位)升级了Windows 10测试环境,升级后,即使是最小的程序也会生成以下错误日志:Python USB:USB\U设备\U句柄\U win.cc:1020无法在Windows10上使用Selenium从ChromeDriver v87/Chrome v87的节点连接错误中读取描述符,python,selenium,google-chrome,selenium-chromedriver,webusb,Python,Selenium,Google Chrome,Selenium Chromedriver,Webusb,最近,我们使用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 fr
[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/Chrome v86,ChromeDriver/Chrome v87是否有任何变化?有什么线索吗?我为日志垃圾邮件道歉。如果使用WebUSB连接到设备时没有问题,可以忽略这些警告。Chrome试图读取当前挂起的USB设备的属性时会触发这些问题。经过多次讨论、文档记录和Chrome问题后,以下是与日志消息呈现相关的详细信息:
[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)
细节 这一切都始于报告铬问题,具体如下:
- 对于Linux(可能还有Mac),WebUSB通知和通信都能正常工作(在允许用户按照udev规则访问设备之后)
- 对于Windows,libusb似乎只适用于非标准的WinUsb驱动程序()
chrome://flags#enable-new-usb-backend
提交的更多变更请求如下:
- :根据挂起报告,此函数执行RPC调用,这可能需要一些时间才能完成。使用base::ScopedBlockingCall标记调用,以便线程池知道此任务可能会忙一段时间
- :此标志是试验性的,因为beta channel将此更改配置用作测试的默认设置
前方道路 Chrome团队已经将/to合并到Chrome v90中,该版本将很快推出
更新 根据的[Committer,Google Chrome的WebDriver]: …“最好降低这些消息的日志级别,这样它们在默认情况下就不会出现在控制台上,但我们还没有找到这样做的代码”
工具书类 您可以在以下内容中找到一些相关的详细讨论:
无论如何,我们不能在日志中显示或隐藏它?@BharadwajGiridhar我认为我们目前无法抑制错误消息。但是,它将在下一个Chrome版本中自动删除。见此,感谢@DebanjanB在您的回答中总结了我的工作,但是您的结论不正确。我认为最好降低这些消息的日志级别,这样它们在默认情况下就不会出现在控制台上,但我们还没有找到这样做的代码。您在回答开始时提到的libusb问题与Chrome从libusb切换到其他位置的原因无关。Chrome将继续需要Windows提供的标准WinUSB驱动程序。这与libusb支持的驱动程序相同。libusb还支持一些非标准的驱动程序(libusbk等),而Chrome目前不支持这些驱动程序。非常感谢,我遵循了
chrome://flags
和enabled启用新USB后端
选项,之后日志消息消失。希望默认情况下Chrome90会添加这些更改。我正在使用Chromedriver V90和最新的Win 10,在运行驱动程序时,我会收到相同的错误消息。唯一的区别是,在我的例子中,错误消息是…win.cc:1054而不是1020。我启用了上面评论中提到的Chrome标志,但错误仍然存在。