WebDriver の .NET バインディングを使用して、Grid2 を介して同時にテストを実行します。テストを個別に実行することは問題ありませんが、グリッドを介して複数のテストを実行すると、次のエラーが発生することがあります。一度発生すると、通常は同じ理由で複数のテストが失敗します。
45000 ミリ秒以内にロック ポート 7054 にバインドできませんビルド情報: バージョン: '2.29.0'、リビジョン: '58258c3'、時刻: '2013-01-17 22:46:35' システム情報: os.name: 'Windows Server 2008 R2'、os.arch: 'x86'、os.version: '6.1'、java.version: '1.7.0_11' ドライバー情報: driver.version: FirefoxDriver
次のような RemoteWebDriver インスタンスを作成する場所まで、問題の原因を突き止めました。
var desiredCapabilites = new DesiredCapabilities();
desiredCapabilites.SetCapability(CapabilityType.BrowserName, "firefox");
desiredCapabilites.SetCapability(CapabilityType.Platform, new Platform(PlatformType.Windows));
desiredCapabilites.SetCapability(CapabilityType.Version, "14.0.1");
try { _driver = new RemoteWebDriver(new Uri("http://qwautomation:4444/wd/hub"), desiredCapabilites, TimeSpan.FromSeconds(180.0)); }
catch (Exception ex) { Notes.Add("AUTOMATION ERROR: This error originates from MasterSetup.cs (line 47)"); Notes.Add("AUTOMATION ERROR: " + ex.Message); Exception("AUTOMATION ERROR: This error originates from MasterSetup.cs (line 47)"); }
ここで、qwautomation は、Grid Hub がホストされているマシンです。私の仮定は、Hub がポートに FireFox インスタンスを既に含むノードにテストをディスパッチしている、またはセッションが JVM によって適切に破棄されていないことです (ノード マシンの一時フォルダー)。ノードとハブの構成ファイルを作成しました。以下に投稿します。テストが FireFox ポートにバインドできない場合に、テストを「キューに入れる」方法があるかどうかはわかりませんでした。
ハブ
{
"port": 4444,
"newSessionWaitTimeout": 30000,
"nodePolling": 5000,
"cleanUpCycle": 5000,
"timeout": 300000,
"browserTimeout": 0,
"maxSession": 1
}
ノード
{
"capabilities":
[
{
"browserName":"firefox",
"maxInstances":1
}
],
"configuration":
{
"cleanUpCycle":2000,
"timeout":180000,
"maxSession":5,
"hubPort":4444,
"hubHost":"qwautomation"
}
}
編集: DesiredCapabilities オブジェクトから「バージョン」機能を削除しましたが、何度かテストを実行してもエラー サーフェスは表示されませんでした。これが実際の解決策かどうかはわかりませんが、少なくとも例外のリスクが減るようです。