35
votes

Échec de la lecture du descripteur à partir de la connexion du nœud: un périphérique attaché au système n'est pas une erreur de fonctionnement à l'aide de Chromedriver Selenium sur Windows OS

J'ai eu cela lors de l'exécution du script Selenium WebDriver dans Python, j'ai également défini le chemin du chemin dans l'environnement système et j'ai également essayé de télécharger le webdriver qui correspond à ma version Chrome. Et aussi letter la version également. Mais j'obtiens toujours cette erreur:

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

J'ai utilisé ceci dans mon code:

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


4 commentaires

@Debabjanb avez-vous fini par résoudre ce problème? J'ai le même problème.


Voir ce stackoverflow.com/a/65134639/6875391 Dans Chrome, j'ai suivi Chrome: // les drapeaux et ont permis de permettre un nouveau backend USB USB: Option, après cela, le message du journal a disparu


@klapshin J'obtiens également ce message «Impossible de lire ...» - sur mon projet C # -Selenium-VS Code 2019. Je suis allé à Chrome: // Flags mais il n'y a pas de «nouvelle option de backend USB», ou quoi que ce soit avec USB.


@Annebailly ces derniers temps, ils l'ont corrigé bugs.chromium.org/p/ Chrome / Issues / Detail? ID = 637404 Il pourrait donc être notre version Chromedriver pour être mise à jour vers la dernière, ou alternativement en arrière vers la version Chrome + Chromedriver précédente où ils ont une telle option. Pour vérifier s'il s'agit vraiment d'un problème USB, débranchez le périphérique USB et voyez si l'erreur se dissape.


11 Réponses :


1
votes

L'erreur est probablement parce que vous avez utilisé des parenthèses dans la variable Resource_Path. Le code doit être le suivant:

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

S'il y a encore un problème, vous pouvez essayer de garder le pilote Web dans le même dossier que le fichier Python.


1 commentaires

J'ai essayé votre chemin mais ça me donne toujours cette erreur ...!



12
votes

Ce message d'erreur ...

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

... implique que le chromedriver a soulevé une erreur lors de l'essayer d'initier / de paître un nouveau navigation Contexte c'est-à-dire Session du navigateur de chrome .


Analyse

Cette erreur se produit en raison d'un dispositif USB qui est attaché à la

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

xxx


solution

Cette erreur n'est pas nocif et ne bloque pas le frai de la nouvelle session du contexte de navigation c'est-à-dire Chrome Browser . Vous pouvez donc ignorer l'erreur.

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

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

références

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


3 commentaires

Je n'ai attaché aucun dispositif USB. Et je dois me débarrasser de cette erreur car j'ai besoin de transformer ce script en un fichier ".exe" pour exécuter sur n'importe quelle machine de fenêtre.


@Umangbaraiya L'erreur provient d'un rappel de Chrome / ChromEdriver et n'a pas d'effet vos résultats de test et de test. Resulten exe File fonctionnerait également Perfecto.


Cela n'a pas fonctionné pour moi. Le pilote lance mais j'entre des commandes via Python Invite et lorsque je lui donnais la commande suivante, l'erreur est venue dans l'invite. Je crains que si je fais un script, cette erreur ne laissera pas le script fonctionner.



6
votes

Après une semaine de recherche d'une réponse à mon erreur, je me suis retrouvé avec une solution dont vous avez juste besoin d'installer la bibliothèque Pywin32 et cela ne vous donnera pas d'erreur

Ouvrez CMD et Type

PIP installe Pywin32

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


1 commentaires

Salut, installer uniquement pywin32? Pas besoin d'importation? Parce que j'ai été installé et que l'erreur continue ...



1
votes

Vérifiez votre liste de périphériques pour voir s'il y a des périphériques USB ne fonctionne pas. Je l'ai résolu après que mon ordinateur portable ait été activé les appareils Bluetooth et CAM.  Entrez la description de l'image ici


1 commentaires

Je n'ai attaché aucun type d'appareil USB lors de l'exécution de ce code et le code n'a besoin de aucun type d'appareil USB pour exécuter ce code, je suis entièrement indépendant



42
votes

Il s'agit d'un problème de chromedriver dont ils travaillent toujours les plis. Je ne suis pas entièrement sûr 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 "ignorer", mais c'est certainement regroupe beaucoup les journaux.

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

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

Vous pouvez ajouter vos autres options ChromEdriver et passer à cela également, en plus de pointer votre exécutable Chromedriver si vous le souhaitez.


5 commentaires

Pour tous ceux qui se demandent ce que devraient être les options , j'ai trouvé Options = webDriver.ChromeOptions () pour faire le travail.


Tu as raison. Je ne me laisserai pas revoir l'édition. Cela dépend de la façon dont votre pilote Chrome est configuré, mais cela fonctionnera dans la plupart des cas. GJ!


@Ruelazzaro Où dans votre code ou votre framework avez-vous mis ce bloc de code d'options? Je reçois ce message «Échec de la lecture ...» sur mon projet C #-Selenium-VS Code 2019. J'ai mis ce bloc de code dans des endroits dfferent de la classe mais j'obtiens une erreur de compilation. Je suis un apprenant débutant, donc je fais probablement quelque chose de mal.


@Annebailly pas de soucis! Tout ce Python. Je ne sais pas comment je le tracerais en C #. Je suis désolé! Je suis sûr que quelqu'un peut vous aider cependant. Dans Python, vous définissez tout cela avant de lancer le pilote et de faire des choses (comme lancer une page Web et cliquer sur des trucs).


Cela le fera dans C # var Options = new ChromeOptions (); options.AdDExCludEdArguments (new List {"excludeswitches", "activer-logging"}); Var Driver = new ChromEdriver (Options);



-1
votes

J'ai essayé de nombreuses méthodes, mais aucun n'a fonctionné pour moi.

Tout ce que je peux faire, c'est retarder la sortie automatique du navigateur Chrome avec le modume de temps.

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

p>


0 commentaires

-2
votes

Veuillez vérifier le nom du fichier de spécifications une fois. J'ai renommé le fichier de spécifications, mais oubliez de le mettre à jour dans le fichier config afin d'obtenir cette erreur. Plus tard, j'ai changé. Il a résolu


0 commentaires

2
votes

Solution:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import time

options = Options()

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

driver = webdriver.Chrome(executable_path=r"D:\SW\chromedriver90\chromedriver.exe",chrome_options=options)

url = 'https://carlsagan.com/'

driver.get(url)

...

driver.quit()


1 commentaires

Salut @Dennis, pourriez-vous me dire comment je pourrais inclure l'option sans tête avec cette option expérimentale? Merci d'avance!



2
votes

J'ai trouvé une solution !! Télécharger d'abord Cette extension chromée puis cliquez sur l'extension et définissez l'agent utilisateur sur" Chrome sur Mac "

Deuxième modification de cette ligne dans votre code

pip install pywin32

to:

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

ouvrir également CMD et Type:

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


0 commentaires

0
votes

L'erreur xxx

a disparu après le téléchargement et l'utilisation de la version requise du pilote Web pour ma version Chrome que j'ai installée. Voir https://chromedriver.chromium.org/downloads


1 commentaires

Remarque: j'utilise Robot Framework avec la bibliothèque Selenium.



0
votes

options.add_experimental_option ("excludeswitches", ["activer-logging"]) a fait l'astuce pour moi sans avoir à installer pywin32.


0 commentaires