9
votes

Comment résoudre l'erreur `` Échec de l'adaptateur par défaut '' lors du lancement de Chrome et essayer d'accéder à une page Web à l'aide de ChromeDriver à l'aide de Selenium

J'ai mis à jour Selenium mais l'erreur continue de se produire même si la page Web se charge. Cependant, dans certains cas, le pilote démarre mais il stagne. Cela pose-t-il un problème et si oui, comment puis-je le résoudre?

[11556:9032:0502/152954.314:ERROR:device_event_log_impl.cc(162)] [15:29:54.314] Bluetooth: bluetooth_adapter_winrt.cc:1055 Getting Default Adapter failed.


3 commentaires

Collez votre code que vous exécutez. Fournissez plus de description comme le navigateur Chrome, ChromeDriver, la version Selenium que vous utilisez. Passez également par Comment poser une question


J'obtiens la même erreur en C #. J'imagine que c'est parce qu'il n'y a pas d'adaptateurs Bluetooth sur l'ordinateur exécutant le code, mais je ne vois aucun moyen de désactiver la vérification.


En ce qui concerne la correction de @ Alok, il y a en fait assez d'informations ici, si vous pouvez le croire. Pour C # au moins, un code "ouvrir une fenêtre ChromeDriver" extrêmement générique ( executeautomation.com/blog/simple-code-with-selenium-c ) générera l'erreur dans la console. En ce qui concerne "plus de description", la gestion des versions est les versions à jour de tout - ChromeDriver 81.0.4044.13800, Selenium WebDriver 3.141.0


4 Réponses :


-1
votes

J'obtenais la même erreur. Sur un code qui fonctionnait hier. Le Code est disponible à cette url en ce moment https://youtu.be/0kLoVGLTISg?list=PLUDwpEzHYYLvx6SuogA7Zhb_hZl3sln66&t=4073

https://github.com/Microsoft/vscode-python/issues/3252 Vous avez trouvé l'indice de résolution ici dans la section des commentaires, ainsi que https://docs.python.org/3/library/unittest.html#unittest. TestCase.setUp ,

suggérant que, nous ne pouvons pas exécuter sur "Pycharm" / VSCode en utilisant un clic droit -> exécuter à partir du niveau de la classe, nous devons l'exécuter à partir du niveau du module, c'est-à-dire en dehors du niveau de la classe, car la méthode setUpClass () n'est pas exécutée lors de l'exécution à partir de à l'intérieur de la classe.


0 commentaires

0
votes

J'ai eu des problèmes similaires

ConnectionResetError: [WinError 10054] Une connexion existante a été fermée de force par l'hôte distant et

Bluetooth: bluetooth_adapter_winrt.cc:1055 Échec de l'obtention de l'adaptateur par défaut.

Les deux ont disparu après avoir exécuté cmd en tant qu'administrateur . Je ne sais pas quelle est la cause exacte de ce problème, mais pour moi, il semble que ce soit un manque de privs lors de l'utilisation du sélénium.

Si quelqu'un pouvait expliquer pourquoi cela se produit, ce serait formidable.


1 commentaires

Piotr, je suis curieux - l'ordinateur sur lequel vous exécutez cela a-t-il réellement un périphérique Bluetooth? Je me demande si vous avez un tel appareil, peut-être que l'exécution de cmd en tant qu'administrateur lui donne accès à cet appareil, il n'y a donc pas d'erreur. Purement spéculation, cependant.



8
votes

Ce message d'erreur ...

from selenium import webdriver

options = webdriver.ChromeOptions() 
options.add_experimental_option("excludeSwitches", ["enable-logging"])
driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
driver.get("https://www.google.com/")

... implique que ScopedClosureRunner on_init échoué dans BluetoothAdapterWinrt::OnGetDefaultAdapter() .


Une analyse

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

excludeSwitches: ['enable-logging']

Solution

Veiller à ce que:

  • Selenium est mis à niveau vers les niveaux actuels de la version 3.141.59 .
  • ChromeDriver est mis à jour au niveau actuel de ChromeDriver v84.0 .
  • Chrome est mis à jour au niveau actuel de la version 84.0 de Chrome . (selon les notes de version de ChromeDriver v84.0 )
  • Si votre version de base de Web Client est trop ancienne, désinstallez-la et installez une version GA récente et une version publiée de Web Client .

Considérations supplémentaires

Cependant, il a été observé que cette erreur peut être supprimée en exécutant Chrome en tant qu'utilisateur root ( administrator ) sous Linux. mais ce serait un écart par rapport à la documentation de ChromeDriver - WebDriver pour Chrome où il est mentionné:

Une cause fréquente de panne de Chrome au démarrage est l'exécution de Chrome en tant qu'utilisateur root (administrateur) sous Linux. Bien qu'il soit possible de contourner ce problème en passant l'indicateur '--no-sandbox' lors de la création de votre session WebDriver , c'est-à-dire que la session ChromeDriver en tant que telle configuration n'est pas prise en charge et fortement déconseillée.

Idéalement, vous devez configurer votre environnement pour exécuter Chrome en tant qu'utilisateur régulier à la place.


Suppression de l'erreur

Enfin, selon la documentation de Selenium Chrome Driver: Résoudre les messages d'erreur concernant les clés de registre et les options expérimentales, ces journaux d'erreurs peuvent être supprimés en ajoutant l'argument:

void BluetoothAdapterWinrt::OnGetDefaultAdapter(
    base::ScopedClosureRunner on_init,
    ComPtr<IBluetoothAdapter> adapter) {
  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
  if (!adapter) {
    BLUETOOTH_LOG(ERROR) << "Getting Default Adapter failed.";
    return;
  }

Ainsi, votre bloc de code efficace sera:

ERROR:device_event_log_impl.cc(162)] [15:29:54.314] Bluetooth: bluetooth_adapter_winrt.cc:1055 Getting Default Adapter failed.


1 commentaires

recherche d'une syntaxe similaire pour moka ...:



0
votes

Le simple fait d'activer le Bluetooth de mon appareil a résolu le problème ... Je ne sais pas pourquoi


1 commentaires

J'utilise des conteneurs Docker pour exécuter mon code - j'imagine que je pourrais leur ajouter un faux périphérique Bluetooth, mais cela semble un peu excessif!