Python

【Python】SeleniumでIEを使ってWebアクセスすると「ConnectionResetError: [WinError 10054] 既存の接続はリモート ホストに強制的に切断されました。」

ConnectionResetErrorが発生

SeleniumでInternet Explorerを操作するコードをPythonで書いていたところ、「ConnectionResetError: [WinError 10054] 既存の接続はリモート ホストに強制的に切断されました。」が発生しました。

同じコードをGoogle Chromeで動かすと問題なく動くのでIEと(Edge)だけがこの問題に直面していました。

GitHubもStack Overflowもヒットはするんですけど、有益な情報なしとかなり厳しい状況。そもそもIEを使ってる人なんていないんでしょうね。。。うちはクソ企業なので、社内システムがIEとEdgeのみに対応なので立ち向かう必要がありますが・・・

ソースコードと実行結果

ソースコード

ドライバを指定してWebアクセスをするというだけのシンプルな実装です。

 

実行結果ログ

 

原因と解決方法

原因

実行環境がWidows10(64bi)とIE(64bit)とWebDriver(64bit用)を使用していたのが原因でした。

64bit環境で動作していたので、何も考えずに64bitのWebDriver入れてました。何がいけないのかさっぱりですが、どうも相性が悪い場合があるらしい。他のPCで同じことを試してみたら64bitのWebDriverで普通に動いたので、本当によくわかりません。

解決方法

IEのWebDriverを32bitのものに差し替えるだけです。

公式サイトからダウンロードして、パスを差し替えましょう。

これで無事に動くようになりました。

情報少ない上に、ログやソース読んでもわからない系の問題って厄介ですよね。