既存のものを使用するように指示したにもかかわらず、Selenium が常に Web Driver を使用して一時的な Firefox プロファイルを作成するのはなぜですか?
この回答によると、 Selenium が Web Driver を使用して一時的な Firefox プロファイルを作成するのを止めることはできません。しかし、chromedriver を使用すると、これを実現できます。では、なぜ Firefox とは違うのでしょうか。Selenium リポジトリのFirefoxProfile.csを確認したところ、次のコード スニペットがプロファイルのコピーに使用されていることがわかりました---
public void WriteToDisk()
{
this.profileDir = GenerateProfileDirectoryName();
if (!string.IsNullOrEmpty(this.sourceProfileDir))
{
FileUtilities.CopyDirectory(this.sourceProfileDir, this.profileDir);
}
else
{
Directory.CreateDirectory(this.profileDir);
}
this.InstallExtensions();
this.DeleteLockFiles();
this.DeleteExtensionsCache();
this.UpdateUserPreferences();
}
しかし、クロムにはそのようなことはありません。
これは、webdriver が拡張機能 (webdriver.xpi) をインストールして Firefox と通信するのに対し、chromedriver.exe は chrome と対話するために使用されるためでしょうか。
それが理由である場合、バージョン 3.0 では、webdriver は geckodriver.exe を使用して firefox と通信しています。バージョン 3.0 以降の webdriver は、Firefox 用の一時プロファイルを作成しなくなりますか?
更新: 今日、webdriver v 3.0+ で遊んだところ、legacymode がオフの最新バージョンでも、rust_mozprofile.wUqPXh48avDR という名前の一時プロファイルが生成されていることがわかりました。私の推測では、この一時プロファイルは、 Rustで記述されたgeckodriver.exeによって生成されます。
3年前にchromedriverを使用しましたが、chromedriver.exeもそのようなタイプの一時ファイルを生成するかどうかわかりません。専門家からの回答を期待しています...