Python >> Tutoriel Python >  >> Python Tag >> Windows

Échec de la lecture du descripteur à partir de la connexion au nœud :un appareil connecté au système ne fonctionne pas, erreur lors de l'utilisation de ChromeDriver Selenium sur le système d'exploitation Windows

Ce message d'erreur...

[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)

...implique que le ChromeDriver a généré une erreur lors de la tentative d'initialisation/génération d'un nouveau contexte de navigation c'est-à-dire Navigateur Chrome séance.

Analyse

Cette erreur se produit en raison d'un USB périphérique qui est connecté au système Windows-10 et ne fonctionne pas correctement.

Cette erreur est définie dans usb_device_handle_win.cc comme suit :

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;
  }

Solution

Cette erreur n'est pas nuisible et ne bloque pas l'apparition du nouveau contexte de navigation c'est-à-dire Navigateur Chrome session. Vous pouvez donc ignorer l'erreur en toute sécurité.

Cependant, dans votre bloc de code, vous devez remplacer le mot-clé resource_path avec executable_path et votre bloc de code effectif sera :

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

Références

Vous pouvez trouver quelques discussions détaillées pertinentes dans :

  • USB :usb_device_handle_win.cc:1020 Échec de la lecture du descripteur à partir d'une erreur de connexion de nœud avec ChromeDriver v87/Chrome v87 à l'aide de Selenium sous Windows10
  • Échec de la lecture du descripteur à partir de la connexion au nœud :un appareil connecté au système ne fonctionne pas, erreur lors de l'utilisation de ChromeDriver Chrome via Selenium

Il s'agit d'un problème de chromedriver sur lequel ils travaillent toujours. Je ne suis pas entièrement sûr de ce qui le cause, mais les détails techniques semblent être détaillés dans la réponse de Debanjan.

La solution générale sur Internet semble simplement être "l'ignorer", mais cela encombre beaucoup les journaux.

J'ai cependant trouvé un moyen de le faire taire (ainsi que l'avertissement "DevTools" qui apparaît également souvent).

options = Options
options.add_experimental_option('excludeSwitches', ['enable-logging'])
driver = webdriver.Chrome(options=options)

Vous pouvez également ajouter vos autres options et commutateurs de chromedriver, en plus de pointer vers votre exécutable chromedriver si vous le souhaitez.


Après une semaine à trouver une réponse à mon erreur, je me suis retrouvé avec une solution dont il vous suffit d'installer la bibliothèque pywin32 et cela ne vous donnera pas d'erreur

ouvrez cmd et tapez

pip installer pywin32

et vous êtes prêt à partir.....!