如何在网站中捕获错误页面,该网站在Selenium Webdriver c#中引发系统错误/服务器错误,并且在我的测试用例Nunit中失败

 收藏

我一直在尝试找到在Selenium Webdriver C#中捕获此错误的方法。是否有任何方法可以在我的测试用例中捕获此错误?有系统错误或服务器错误,但我无法检索我的错误并使我的测试用例失败。我所有具有这些错误(系统/服务器)的测试用例都以结果=“ Test Passed”结束,而不显示错误。

Eg: Click to View ServerError

Eg: Click to View System Error

[Test]

    public void TestYamaha()
    {
        driver = new ChromeDriver();
        driver.Navigate().GoToUrl("http://192.161.0.1/iels-admin-dev/Login/Login.aspx");
        driver.Manage().Window.Maximize();
        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
        driver.FindElement(By.Id("ctl00_MainContent_ucLogin_txtUserID")).Click();

        driver.FindElement(By.Id("ctl00_MainContent_ucLogin_txtUserID")).Click();
        driver.FindElement(By.Id("ctl00_MainContent_ucLogin_txtUserID")).SendKeys("manteng");
        driver.FindElement(By.Id("ctl00_MainContent_ucLogin_txtPassword")).SendKeys("Nic15742368");
        driver.FindElement(By.Id("ctl00_MainContent_ucLogin_cmdLogin")).Click();
        Thread.Sleep(2000);
        driver.Navigate().GoToUrl("http://192.161.0.1/iels-admin-dev/Announcement_News/Announcement_News_Search.aspx");
        Thread.Sleep(2000);
        driver.FindElement(By.CssSelector(".ui-datepicker-trigger:nth-child(2)")).Click();
        Thread.Sleep(2000);
        driver.FindElement(By.CssSelector(".ui-icon-circle-triangle-w")).Click();
        Thread.Sleep(2000);
        driver.FindElement(By.LinkText("1")).Click();
        Thread.Sleep(2000);
        driver.FindElement(By.Id("ctl00_MainContent_cmdSubmit")).Click();
             Thread.Sleep(2000);
        driver.FindElement(By.CssSelector(".clsDataGridAltData a:nth-child(2) > img")).Click();
        Thread.Sleep(2000);
        driver.FindElement(By.Id("ctl00_MainContent_cmdSubmit")).Click();
        Thread.Sleep(2000);
    }

这段代码显示了系统错误(如图所示),但显示了我在测试用例中的显示方式。

回复
  • hculpa 回复

    我只能想到如果URL包含“错误”,它将截屏并无法通过测试用例。

    if (url.Contains("error") || url.Contains("Error") == true)
                {
                    Base.ErrorMessage(driver, element);  // screenshot the page 
                    throw new SystemException("Webpage throw error");
                    //Console.WriteLine("Got");
                }
    
                else
                {
                    Console.WriteLine("Passed");
                }
    
                }
    

  • 米唐 回复

    使用try-catch块来处理任何异常,如果需要,则可以将其记录在catch块中。您应该使用任何声明库使它通过/失败。

    注意:不要将所有内容都写入Test类。