2

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 オブジェクトから「バージョン」機能を削除しましたが、何度かテストを実行してもエラー サーフェスは表示されませんでした。これが実際の解決策かどうかはわかりませんが、少なくとも例外のリスクが減るようです。

4

2 に答える 2

1

通常、サーバーを再起動すると問題が解決することがわかりました。問題が解決しない場合は、グリッドを介して実行する連続テストの数を減らすか、Selenium ノードのメモリ容量を増やしてみてください。

于 2013-04-01T20:20:41.310 に答える