Python 无法从节点连接读取描述符:在Windows操作系统上使用ChromeDriver Selenium时,连接到系统的设备未运行错误

Python 无法从节点连接读取描述符:在Windows操作系统上使用ChromeDriver Selenium时,连接到系统的设备未运行错误,python,selenium,google-chrome,windows-10,selenium-chromedriver,Python,Selenium,Google Chrome,Windows 10,Selenium Chromedriver,我在python中运行SeleniumWebDriver脚本时得到了这个消息,我还在系统环境中设置了路径,并尝试下载与我的chrome版本匹配的webdriver。还有最新版本也。但我仍然得到这个错误: [8552:6856:1120/155118.770:ERROR:device_event_log_impl.cc(211)] [15:51:18.771] USB: usb_device_handle_win.cc:1020 Failed to read descriptor from nod

我在python中运行SeleniumWebDriver脚本时得到了这个消息,我还在系统环境中设置了路径,并尝试下载与我的chrome版本匹配的webdriver。还有最新版本也。但我仍然得到这个错误:

[8552:6856:1120/155118.770:ERROR:device_event_log_impl.cc(211)] [15:51:18.771] USB: usb_device_handle_win.cc:1020 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F)
[8552:6856:1120/155118.774:ERROR:device_event_log_impl.cc(211)] [15:51:18.774] USB: usb_device_handle_win.cc:1020 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F)
[8552:6856:1120/155118.821:ERROR:device_event_log_impl.cc(211)] [15:51:18.821] USB: usb_device_handle_win.cc:1020 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F)
我在代码中使用了这个:

driver = webdriver.Chrome(resource_path("C:\\webdriver\\chromedriver.exe"))  # to open the chromebrowser
driver.get("https://web.whatsapp.com")

错误可能是因为您在resource_path变量中使用了括号。 代码应如下所示:

driver = webdriver.Chrome(resource_path="C:\webdriver\chromedriver.exe") # to open the chromebrowser 
driver.get("https://web.whatsapp.com")
如果仍然存在任何问题,您可以尝试将web驱动程序保留在与python文件相同的文件夹中。

此错误消息

[14432:11656:1120/161059.539:ERROR:device_event_log_impl.cc(211)] [16:10:59.539] 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浏览器会话)时出错


分析 发生此错误的原因是连接到系统的USB设备不能正常工作

此错误在中定义如下:

void UsbDeviceHandleWin::GotDescriptorFromNodeConnection(
    TransferCallback callback,
    scoped_refptr<base::RefCountedBytes> request_buffer,
    scoped_refptr<base::RefCountedBytes> original_buffer,
    Request* request_ptr,
    DWORD win32_result,
    size_t bytes_transferred) {
  std::unique_ptr<Request> request = UnlinkRequest(request_ptr);
  if (win32_result != ERROR_SUCCESS) {
    SetLastError(win32_result);
    USB_PLOG(ERROR) << "Failed to read descriptor from node connection";
    std::move(callback).Run(UsbTransferStatus::TRANSFER_ERROR, nullptr, 0);
    return;
  }

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


在找到我的错误的答案一周后,我终于找到了一个解决方案,您只需要安装pywin32库,它不会给您一个错误

打开cmd并键入

pip安装pywin32


你也可以走了

检查您的设备列表,查看是否有任何usb设备不工作。
在我的笔记本电脑启用了蓝牙和cam设备后,我解决了这个问题。

这是一个chromedriver问题,他们仍在解决这个问题。我不完全确定是什么原因造成的,但德班詹的回答中似乎有详细的技术细节

互联网上的一般解决方案似乎就是“忽略它”,但它确实会把日志弄得乱七八糟

不过,我确实找到了让它闭嘴的方法(以及经常弹出的“DevTools”警告)


您可以添加其他chromedriver选项并切换到该选项,如果您愿意,还可以指向chromedriver可执行文件。

我尝试了许多方法,但没有一种对我有效

我所能做的就是延迟Chrome浏览器的自动退出时间模式

from selenium import webdriver
import chromedriver_binary  # Adds chromedriver binary to path
import time

options = webdriver.ChromeOptions() 
options.add_argument("start-maximized")
driver = webdriver.Chrome(options=options)

driver.get('https://www.google.com/')
time.sleep(3600) # let the browser die after 1 hour

请检查一下规范文件名。我已经重命名了spec文件,但是忘记在config文件中更新它,所以出现了这个错误。后来我改变了。它解决了

解决方案:

从selenium导入webdriver
从selenium.webdriver.support.ui导入WebDriverWait
从selenium.webdriver.support将预期的_条件导入为EC
从selenium.webdriver.common.by导入
从selenium.webdriver.chrome.options导入选项
导入时间
选项=选项()
选项。添加实验选项('ExcludeSwitchs',['enable-logging'])
driver=webdriver.Chrome(可执行文件\u路径=r“D:\SW\chromedriver 90\chromedriver.exe”,Chrome\u选项=options)
url='1〕https://carlsagan.com/'
获取驱动程序(url)
...
driver.quit()

我试过你的方法,但它仍然给我那个错误。。。!我没有连接任何USB设备。我需要消除这个错误,因为我需要将这个脚本转换成一个window“.exe”文件,以便在任何窗口计算机上运行。@Umangbaraya该错误来自Chrome/ChromeDriver的回调,不会影响您的测试和测试结果。Resulten
exe
文件也可以完美地工作。这对我不起作用。驱动程序确实启动了,但我通过python提示符输入命令,当我给它下一个命令时,错误出现在提示符中。我担心如果我编写任何脚本,这个错误将无法让脚本正常工作。@debbjanb您最终解决了这个问题吗?我也有同样的问题。在我关注的Chrome中看到了吗chrome://flags 并启用新的USB后端选项,在此之后,日志消息消失。运行此代码时,我没有连接任何类型的USB设备,并且代码不需要任何类型的USB设备来运行此代码。我完全独立。这没有解决我的错误。对我来说也不起作用。我不想去。对于任何想知道
选项应该是什么的人,我找到了
options=webdriver.ChromeOptions()
来做这项工作。你说得对。不让我查看编辑。这取决于你如何设置你的chrome驱动程序,但在大多数情况下都可以。Gj!
options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging'])
driver = webdriver.Chrome(options=options)
from selenium import webdriver
import chromedriver_binary  # Adds chromedriver binary to path
import time

options = webdriver.ChromeOptions() 
options.add_argument("start-maximized")
driver = webdriver.Chrome(options=options)

driver.get('https://www.google.com/')
time.sleep(3600) # let the browser die after 1 hour