私はそれを解決したと思うので、そこに私の答えが欲しかった. この回答では、URL を介して資格情報を渡す必要はありません (私のことを気に入らない方のために)。また、カスタムの Firefox プロファイルや拡張機能をインストールする必要も、ソリューションに含める必要も、ブラウザーにインストールする必要もありません。これにより、マシン間の互換性の問題が解消されます。
私の問題は、ログインがプロキシの背後にあるため、URL を介して資格情報を渡すことによって認証を完了できないことでした。
そこで、Windows 自動化ツールキットに目を向け、AutoIT を見つけました。AutoIT と Selenium を使用すると、表示されるウィンドウ ダイアログにユーザー名とパスワードを送信することで、自動的にログインできます。方法は次のとおりです (以下の手順は c# 用であることに注意してください。
1 - http://www.autoitscript.com/site/autoit/downloads/から AutoIT をダウンロードします。
2 - autoit .dll をプロジェクト参照に追加します。
参照を右クリックし、[参照の追加] を選択します。次に、参照ボタンをクリックして dll の場所を参照し (ほとんどのデフォルト インストールでは c:\Program Files (x86)\AutoIt3\AutoItX\AutoItX3.dll)、プロジェクトに追加します。
3 - 次のように AutoIT と Selenium を使用します (Web ドライバーが既に初期化されていると仮定します)。
//Initialize AutoIT
var AutoIT = new AutoItX3();
//Set Selenium page load timeout to 2 seconds so it doesn't wait forever
Driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(2));
//Ingore the error
try
{
Driver.Url = url;
}
catch
{
return;
}
//Wait for the authentication window to appear, then send username and password
AutoIT.WinWait("Authentication Required");
AutoIT.WinActivate("Authentication Required");
AutoIT.Send("username");
AutoIT.Send("{TAB}");
AutoIt.Send("password");
AutoIT.Send("{ENTER}");
//Return Selenium page timeout to infinity again
Driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(-1));
とにかく、それだけです、そしてそれは魅力のように機能します:)
また、シーケンス「{x}」を使用して AutoIT でエスケープする必要がある特殊文字がいくつかあることにも注意してください。たとえば、パスワードが「!tRocks」の場合、それを「{!}tRocks」として AutoIT に渡す必要があります。
楽しい自動化。