最初に、私は Selenium テスト フレームワークを初めて使用し、プログラミングの経験があまりないことを述べなければなりません。私はクライアント側の Web テストを行う必要があり、セレンが進むべき道だと思い、アーキテクチャを理解しようとしています。現在、例外からの回復に苦労しています。
Main メソッドでエラーが発生した場合は、イベントをサブスクライブしています。
class Program
{
static void Main()
{
AppDomain.CurrentDomain.UnhandledException += ExceptionHandler.CurrentDomainOnUnhandledException;
var test = new Login.LoginPageTests();
test.DoLogin();
}
}
したがって、何かがスローされた場合は、それをログに記録し、baseURL に戻る必要があります。
class ExceptionHandler
{
internal static void CurrentDomainOnUnhandledException(object sender, UnhandledExceptionEventArgs unhandledExceptionEventArgs)
{
var screenShot = TestHelpers.TakeScreenShot();
var stack = new StackTrace();
var callingMethod = stack.GetFrame(1).GetMethod().Name;
var e = (Exception)unhandledExceptionEventArgs.ExceptionObject;
Console.WriteLine("{0} : {1}\nscreenshot: {2}", callingMethod, e.Message, screenShot);
var driver = TestHelpers.Driver;
driver.Navigate().GoToUrl(TestHelpers.BaseUrl);
}
}
しかし今、私がテストメソッドの中にいて、例外がスローされたとしましょう。それでもすべてがクラッシュします。何故ですか?次のテストを続行するにはどうすればよいですか?
編集: TestHelpers.Driver は:
internal class TestHelpers
{
internal const string BaseUrl = @"http://someUrl:8103";
private static IWebDriver _driver;
public static IWebDriver Driver
{
get
{
if (_driver == null)
{
_driver = new FirefoxDriver();
_driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
_driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(30));
}
return _driver;
}
}