IEDriverServer.exe は、.exe 内のリソースとして埋め込まれた IE ドライバーの実際のコードを含む .dll を持つ、小さくて単純な実行可能ファイルとして設計されています。この .dll を利用するには、実行可能ファイルが .dll をどこかに抽出して、Windows LoadLibrary
API を呼び出して .dll のコードを読み込んで実行できるようにする必要があります。デフォルトでは、その抽出は一時ディレクトリに行われます。問題を調査するためのログ ファイルを生成しない場合、.dll が適切に抽出されていないか、抽出された後に への呼び出しがLoadLibrary
失敗したと推測できます。
幸いなことに、IE ドライバーはこの問題の回避策を提供します。コマンド ライン引数として IEDriverServer.exe に渡す--extract-path="path\to\extract\dll\to"
と、抽出に使用するディレクトリを明示的に指定できます。このコマンドライン引数をプログラムで渡す方法については、言語バインディングのドキュメントを参照してください。
たとえば、これを Java で機能させると、コードは次のようになります。
// WARNING: Entirely untested code below! Was written from memory without
// the benefit of an IDE. May not work correctly or even compile without
// modification.
// Assume "location" is a properly instantiated java.io.File containing
// the location of IEDriverServer.exe.
InternetExplorerDriverService service = new InternetExplorerDriverService.Builder()
.withExtractPath(location)
.build();
WebDriver driver = new InternetExplorerDriver(service);
もう 1 つの方法は、手動で IEDriverServer.exe を起動し、言語バインディングのRemoteWebDriver
クラスを使用して接続することです。つまり、実行可能プロセスの存続期間はユーザーが責任を負うことになりますが、それはユーザーが探している動作を実現する方法になる可能性があります。