Python USB:USB\U设备\U句柄\U win.cc:1020无法在Windows10上使用Selenium从ChromeDriver v87/Chrome v87的节点连接错误中读取描述符

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

最近,我们使用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/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驱动程序()
当插入硬件且系统不知道VID/PID时,windows 10将正确加载CDC部分的CDC驱动程序和WebUSB部分的WinUSB驱动程序(版本10)(无红色标志)。然而,chrome似乎永远也找不到这个设备,直到我在界面上手动强制安装一个旧的WinUSB驱动程序(版本6,可能也修改过)

该解决方案按如下步骤实施:

  • 这些更改确保了新后端已准备好进行测试,并可通过和chrome dev频道使用,您可以通过以下方式手动访问:

    chrome://flags#enable-new-usb-backend
    
    提交的更多变更请求如下:

    • :根据挂起报告,此函数执行RPC调用,这可能需要一些时间才能完成。使用base::ScopedBlockingCall标记调用,以便线程池知道此任务可能会忙一段时间
    • :此标志是试验性的,因为beta channel将此更改配置用作测试的默认设置
    由于新后端的实验性启动似乎是稳定的,最终这些配置在默认情况下被启用,以便chanege向所有用户推出

    想法是,一旦此配置成为一些里程碑的默认配置,Chromium团队将开始从旧的后端删除Windows特定的代码并删除标志


    前方道路 Chrome团队已经将/to合并到Chrome v90中,该版本将很快推出


    更新 根据的[Committer,Google Chrome的WebDriver]:

    …“最好降低这些消息的日志级别,这样它们在默认情况下就不会出现在控制台上,但我们还没有找到这样做的代码”


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


    我昨天遇到了这个问题,我通过更新所有可用的windows update解决了这个问题


    无论如何,我们不能在日志中显示或隐藏它?@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标志,但错误仍然存在。