令和にもなって IE モードでしか動作しないウェブアプリケーションを自動化する必要があり(業務上仕方なく、、、)Windows 11 環境で Selenium を IE モードで動作させる手順をまとめた。
Table of contents
はじめに
Sellenium(Python)を使って IE モードで動作するウェブアプリケーションを自動化する必要があった。少し作業したところ、環境構築に手間どってしまったためまとめる。2025年にもなって IE モードの自動化することになった悲しき同業者の参考になれば幸いである。ちなみに IE モードは公式によると、2029年までサポートされる予定である。
前提条件
- Windows 11 環境
- python 12.x
- selenium 4.38.0
手順
公式ドキュメントに従い、進めていく。
-
The Internet Explorer Driver Server をダウンロードする。
-
ダウンロードした zip ファイルを解凍し、任意のフォルダーに置く。
-
環境変数 PATH に解凍したフォルダーを追加する。
-
PCを再起動する。環境変数を確実に反映させるため。
-
main.py を作成し、実行するもエラーが発生する
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
ie_options = webdriver.IeOptions()
ie_options.attach_to_edge_chrome = True
ie_options.edge_executable_path = "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"
driver = webdriver.Ie(options=ie_options)
driver.get("http://www.bing.com")
elem = driver.find_element(By.ID, 'sb_form_q')
elem.send_keys('WebDriver' + Keys.RETURN)
driver.quit()
エラー内容
urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='localhost', port=10122): Read timed out. (read timeout=120)
解決方法
本来であれば、インターネットオプションの「セキュリティ」タブの「保護モードを有効にする」をすべてのゾーンで同じ設定する必要がある。しかし、最新の Windows 11 環境では、そのような設定項目は存在しない。 そのため、以下のレジストリを追加・変更することで解決した。
- Windows キー + R を押し、「regedit」と入力してレジストリエディターを開く。
- 次のパスに移動する。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones - 各ゾーン(0〜4)に対して、以下の DWORD 値を追加または変更する。
- 値の名前:
2500 - 値のデータ:
0(保護モードを無効にする) - レジストリエディターを閉じ、PCを再起動する。
再実行すると、上記のサンプルコードが正常に動作するようになった。
まとめ
レジストリ変更すればエラーを解消することできたが、正直環境依存が強くあまり気持ち良い解決方法じゃないと感じた。
最近読んだ良かった本
- GitLabに学ぶ パフォーマンスを最大化させるドキュメンテーション技術 数千ページにもわたるハンドブックを活用したテキストコミュニケーションの作法
- Amazon Kindle Unlimited でも読めます。
