【Python】エラー対策「システムに接続されたデバイスが機能していません。 (0x1F)」

プログラミング

エラー内容

PythonのVisual studio codeにおいて、SeleniumでGoogle cromeやMicrosoft edgeやFirefoxなどのウェブブラウザを自動操作や制御をしようとした際に、

「USB: usb_device_handle_win.cc:1054 Failed to read descriptor from node connection: システムに接続されたデバイスが機能していません。 (0x1F)」

というエラーコメントがでてきます。

このエラーは、特にプログラムが止まったりすることはなく、プログラムの動作上は影響ありません。しかし、ターミナルに非常に長いエラーログが残ってしまうため、視覚的に非常に邪魔となります。

今回はこのエラーの解決策をお伝えします。

解決策

解決策は、pythonのコードに赤字部分を追加することです。

■コード例

from selenium import webdriver
#selenium、webdriverの定義

from msedge.selenium_tools import Edge,EdgeOptions
#Edgeの定義

driver_url = r"C:\Users\mmiya\AppData\Local\Programs\Python\Python39\msedgedriver.exe"
#Edgeを制御するためのdriver.exe の保管場所の指定

options = EdgeOptions()
#Edge立ち上げ時の制約(Option)の定義

options.add_experimental_option('excludeSwitches', ['enable-logging'])
#これがエラーをなくすコードです。ブラウザ制御コメントを非表示化しています

options.use_chromium = True
#これがエラーをなくすコードです。WebDriverのテスト動作をTrueにしています

driver = Edge(executable_path=driver_url, options=options)
#driverをEdgeで開くコードです。その際にdriver.exeの保管場所の定義とoptions設定をしています

url = 'https://miya-mitsu.com/' 
#私のブログアドレスです

driver.get(url)
#私のブログアドレスをEdgeのアドレスバーに反映します

もしも、Edgeの定義のfrom msedge.selenium_tools import Edge,EdgeOptionsのところでエラーが出る場合は、MicroEdgeのツールがインストールされていないのが原因です。インストールしてください。やりかたは、コマンド プロンプトで、「pip install msedge-selenium-tools selenium == 3.141」と入力し、Enterでインストールできます。。

あと、MicroEdgeの起動で、「Message: session not created: This version of MSEdgeDriver only supports MSEdge version 92」とエラーが出る場合は、お使いのMicroEdgeブラウザに対して、Pythonで起動するdriverのversionが合致していないのが原因です。下記サイトにて、お使いブラウザと同じドライバーをダウンロードし、Pythonフォルダにdriverを上書きしてください。
https://developer.microsoft.com/ja-jp/microsoft-edge/tools/webdriver/

■ここからは解説です。

まず、「.add_experimental_option(‘excludeSwitches’, [‘enable-logging’])」というコードですが、これはブラウザを制御した際に表示される「自動テスト ソフトウェアによって制御されています」を非表示化しています。

.addのドットの前には、ブラウザオプションとして定義したものが入ります。

私は、Microsoft Edgeなので、options = EdgeOptions()と定義しているため、optionを.addの前に入れています。これより、options.add_experimental_option(‘excludeSwitches’, [‘enable-logging’])となります。


次に、「.use_chromium = True」というコードです。

こちらは、pythonなどでウェブドライバー(chromium)を自動化することをTrueで宣言しています。

上記2つのコードを記載することで、自動テストコメントの非表示化、かつ、ウェブドライバー自動化宣言を行うことができます。

これにより、悩まされていたエラー表示はなくなります。

片方のコードだけでは、エラー表示は無くなりませんのでご注意ください。

今回、私はブラウザに「Microsoft Edge」を用いていましたが「google chrome」でも、問題なく動作することは確認しています。

google chromeの方は、コードのなかのMicrosoft Edgeのところをすべて、crhomeに宣言しなおしていただけたらと思います。

さいごに

Pythonは比較的簡単であり初心者がはじめて学ぶ言語に良いと言われています。

しかし、実際にやってみると、予期せぬエラーにはまってしまったり、解決策の調べ方も分からなかったりと、本やウェブ検索での独学ではしんどいと思いました。

Python学習を挫折せずに早くマスターして使いこなしたいという方には、Udemy動画での学習をおすすめします。

下記リンクから、Udemyのサンプル動画で講義の様子や内容を知ることができますので一度確認してみてください。本当におすすめです。

Udemy講師の方は現役でIT企業に勤めている方で、基礎的なところから応用まで丁寧に教えてくれます。また、実際のIT企業におけるコードの書き方やルールなど、独学では学べないところも教えてくれるので、就職や転職も考えている方にも最初の学習に適していると思います。

ちなみに私はプログラミング初心者でしたが、はじめにUdemy動画で基礎的なところを勉強しました。その後は、ウェブ検索で独学で勉強していますが、今では数千行のプログラムを書いて、完全自動でウェブ情報を収集したり、アプリを動かしたりなどできるようになりました。参考いただけたらと思います。


ここまで読んで頂きありがとうございました。今後もPython初心者に向けて情報発信していきたいと思います。

タイトルとURLをコピーしました