私は、SpecflowとSpecRunを使用してSauce Labsに対していくつかのテストを実行する既存のプロジェクトを持っています。私はBeforeSenario
フックを持ってRemoteWebDriver
とこれを閉じるフックAfterScenario
フックを作成します。Specflow/Seleniumで複数のテストを実行する際のエラー
私は今、次のエラーを取得後、(単に名前空間を変更したファイルをコピーされ、)と最初のテストはうまく動作しますが、別のプロジェクトにこれを移動しました:
An exception of type 'OpenQA.Selenium.WebDriverException' occurred in WebDriver.dll but was not handled in user code
Additional information: Unexpected error. The command you just sent (POST element) has no session ID.
This is generally caused by testing frameworks trying to run commands after the conclusion of a test.
For example, you may be trying to capture a screenshot or retrieve server logs after selenium.stop() or driver.quit() was called in a tearDown method. Please make sure this process happens before the session is ended.
私はプロジェクトを比較しました同じバージョンのSpecFlow、同じ.Netバージョンを使用しています。私は2つのプロジェクトの間に違いは見られません。私の手順で
は、私は次の行を持っている:私は問題はとして代わりに、それは今となっている前回のテストのバージョンを使用していますScenarioContext
からの新しいインスタンスを取得すると思い
public static IWebDriver driver = (IWebDriver)ScenarioContext.Current["driver"];
配置される。
しかし、なぜこれが別のプロジェクトで動作しているのかわかりません。
私はGitHubのhereでSpecflowの例を使用しています
UPDATE
私は問題を発見したように見えます。 Default.srprofileではtestThreadCount
は1でしたが、作業用のソリューションの値は10でした。これを一致させるように更新しました。
この値が何であるべきかわかりません。私はそれが同じ数のテストではないはずだと思いますが、共有ドライバーコンテキストの私の最初の問題をどうやって解決しますか?
このリンクをお寄せいただきありがとうございます。これは、複数のブラウザに対してSpecflowテストを行う方法に関する私の他の問題を解決しました。 Sauce Labsでは、2つの同時テストを行うことができます。つまり、testThreadCountを2に設定する必要がありますか?静的フィールドについて私は何をすべきですか? – ADringer
はい、2に設定し、単にフィールドから静的を削除します。 –