Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 异常、selenium测试、c sharp绑定后恢复_C#_Selenium - Fatal编程技术网

C# 异常、selenium测试、c sharp绑定后恢复

C# 异常、selenium测试、c sharp绑定后恢复,c#,selenium,C#,Selenium,首先,我必须声明,我是Selenium测试框架的新手,在编程方面不是很有经验。 我需要做客户端web测试,我认为selenium是一个不错的选择,我正在尝试设计一个架构。目前我正在努力从一次异常中恢复过来 因此,如果我的主方法出现任何错误,我将订阅一个事件: class Program { static void Main() { AppDomain.CurrentDomain.UnhandledException += ExceptionHandler.Curr

首先,我必须声明,我是Selenium测试框架的新手,在编程方面不是很有经验。 我需要做客户端web测试,我认为selenium是一个不错的选择,我正在尝试设计一个架构。目前我正在努力从一次异常中恢复过来

因此,如果我的主方法出现任何错误,我将订阅一个事件:

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。驱动程序是:

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;
        }
    }

据我所知,
Nunit
在这方面与
Junit
的谷歌类似。

你需要决定在异常情况下可以做什么,是否可以恢复,是否仍打算继续。另外,投资使用NUnit之类的工具,因为这样就可以分离测试了。在您的实例中,如果在登录过程中失败,您希望发生什么?我希望它会掉下来死去。如果我不能登录,我就不能做任何其他事情。是的,登录失败的情况很严重,但在其他情况下,我想转到主页并开始下一个测试。我在这里发现:AppDomain.UnhandledException。。。没有提供阻止应用程序关闭的方法。这些异常还设置了不可设置的IsTerminating标志。这是否意味着我必须抓住我能想到的所有例外情况?我想要的是一种不用try/catch就能处理所有问题的方法。