Перейти к содержимому

Фотография

Nunit + WD вывод сообщений об ошибке


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 10

#1 Mevmix

Mevmix

    Новый участник

  • Members
  • Pip
  • 43 сообщений
  • ФИО:Evgen

Отправлено 12 августа 2014 - 07:53

Всем доброго дня. Использую VS2012 + Selenium WD + Nunit

Подскажите, не срабатывают сообщения об ошибках

1. Если использовать пример, что указан ниже и элемент не найден, то выведет сообщение, но не то что элемент не найден,

        public static void VerifyElementVisible(string elementName, IWebElement webElement)
        {
            if (!webElement.Displayed)
            {
                string e = elementName + "not found";
                throw new Exception();
            }
        }

а NoSuchElementException. Почему так выводит?

 

2. Если использовать TextContext - > TestContext.CurrentContext.Test.FullName, название теста не выводит. К названию теста  у меня привязаны скриншоты - если тест падает. И хотелось бы в скриншоте выводить название теста, но выводит - названиепроекта+класс, вкотором тесты. Самого названия теста нет.

 

Как вообще выводит сообщения ошибок в nunit?

Спасибо

 


  • 0

#2 wret

wret

    Активный участник

  • Members
  • PipPip
  • 124 сообщений
  • Город:Москва

Отправлено 12 августа 2014 - 08:46

 

Всем доброго дня. Использую VS2012 + Selenium WD + Nunit

Подскажите, не срабатывают сообщения об ошибках

1. Если использовать пример, что указан ниже и элемент не найден, то выведет сообщение, но не то что элемент не найден,

        public static void VerifyElementVisible(string elementName, IWebElement webElement)
        {
            if (!webElement.Displayed)
            {
                string e = elementName + "not found";
                throw new Exception();
            }
        }

а NoSuchElementException. Почему так выводит?

 

2. Если использовать TextContext - > TestContext.CurrentContext.Test.FullName, название теста не выводит. К названию теста  у меня привязаны скриншоты - если тест падает. И хотелось бы в скриншоте выводить название теста, но выводит - названиепроекта+класс, вкотором тесты. Самого названия теста нет.

 

Как вообще выводит сообщения ошибок в nunit?

Спасибо

 

1

try catch

2

TestContext.CurrentContext.Test.Name
TestContext.TestName

  • 0

#3 Mevmix

Mevmix

    Новый участник

  • Members
  • Pip
  • 43 сообщений
  • ФИО:Evgen

Отправлено 12 августа 2014 - 10:48

try catch

Не совсем понятно что будет в try?


  • 0

#4 wret

wret

    Активный участник

  • Members
  • PipPip
  • 124 сообщений
  • Город:Москва

Отправлено 12 августа 2014 - 11:39

 

try catch

Не совсем понятно что будет в try?

 

То же что и делали вы, получение любого свойства webElement

Насколько такой подход верен ваше право


  • 0

#5 Mevmix

Mevmix

    Новый участник

  • Members
  • Pip
  • 43 сообщений
  • ФИО:Evgen

Отправлено 12 августа 2014 - 12:21

 

 

try catch

Не совсем понятно что будет в try?

 

То же что и делали вы, получение любого свойства webElement

Насколько такой подход верен ваше право

 

А как вы бы выводили исключения?

сейчас переделал вот на такой способ

Assert.IsTrue(VerifyElement.ElementPresent(lnkLogin), "Element not present on page" + lnkLogin);
        public static bool ElementPresent(IWebElement webElement)
        {
            StringBuilder strError = new StringBuilder();
            try
            {
                return webElement.Displayed;
            }
            catch(NoSuchElementException er)
            {
                strError.Append(er.Message);
                return false;
            }
        }

Ну и соответственно выводит в сообщение NoSuchElementException er, а не то что я указываю http://prntscr.com/4c1i2e

пробовал различные вариации


  • 0

#6 vmaximv

vmaximv

    Опытный участник

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 12 августа 2014 - 12:36

>.< Если у вас есть объект с интерфейсом IWebElement, значит элемент уже найден и в вашем ElementPresent не может быть эксепшена NoSuchElementException априори.
Читайте стектрейс.
  • 0

#7 Mevmix

Mevmix

    Новый участник

  • Members
  • Pip
  • 43 сообщений
  • ФИО:Evgen

Отправлено 12 августа 2014 - 12:58

>.< Если у вас есть объект с интерфейсом IWebElement, значит элемент уже найден и в вашем ElementPresent не может быть эксепшена NoSuchElementException априори.
Читайте стектрейс.

Не совсем понятно.  

1. Подскажите что прочесть про стектрейс.

2.  Я использую PageObjects, но как он может быть уже найден?

Мне все равно надо его проверять, есть ли он на странице.

На очередном билде, его переименовали, да что угодно сделали

Как тут проверять есть элемент или нет

И выводить сообщение об ошибке?


  • 0

#8 wret

wret

    Активный участник

  • Members
  • PipPip
  • 124 сообщений
  • Город:Москва

Отправлено 12 августа 2014 - 13:09

Зачем вам strError?

        public static void ElementPresent(IWebElement webElement)
        {
            try
            {
                 if (webElement.Displayed);
            }
            catch(NoSuchElementException)
            {
                 Assert.Fail("Element not present on page " + webElement.ToString());                
            }        
         }

  • 1

#9 Mevmix

Mevmix

    Новый участник

  • Members
  • Pip
  • 43 сообщений
  • ФИО:Evgen

Отправлено 12 августа 2014 - 13:21

 

Зачем вам strError?

        public static void ElementPresent(IWebElement webElement)
        {
            try
            {
                 if (webElement.Displayed);
            }
            catch(NoSuchElementException)
            {
                 Assert.Fail("Element not present on page " + webElement.ToString());                
            }        
         }

Спасибо!!!!

Только вот одно но - вывело сообщение не название элемента или XPath

 
Результат Сообщение: Element not present on page OpenQA.Selenium.Support.PageObjects.WebElementProxy

  • 0

#10 wret

wret

    Активный участник

  • Members
  • PipPip
  • 124 сообщений
  • Город:Москва

Отправлено 12 августа 2014 - 13:34

 

 

Зачем вам strError?

        public static void ElementPresent(IWebElement webElement)
        {
            try
            {
                 if (webElement.Displayed);
            }
            catch(NoSuchElementException)
            {
                 Assert.Fail("Element not present on page " + webElement.ToString());                
            }        
         }

Спасибо!!!!

Только вот одно но - вывело сообщение не название элемента или XPath

 
Результат Сообщение: Element not present on page OpenQA.Selenium.Support.PageObjects.WebElementProxy

 

Ну это понятно, вообще лучше в ассерте к webElement.ToString() не обращаться

Вынесете в переменную название вашего контрола и явно передавайте в метод (ну или захардкодьте  не делайте так)


  • 1

#11 Mevmix

Mevmix

    Новый участник

  • Members
  • Pip
  • 43 сообщений
  • ФИО:Evgen

Отправлено 12 августа 2014 - 13:49

 

 

 

Зачем вам strError?

        public static void ElementPresent(IWebElement webElement)
        {
            try
            {
                 if (webElement.Displayed);
            }
            catch(NoSuchElementException)
            {
                 Assert.Fail("Element not present on page " + webElement.ToString());                
            }        
         }

Спасибо!!!!

Только вот одно но - вывело сообщение не название элемента или XPath

 
Результат Сообщение: Element not present on page OpenQA.Selenium.Support.PageObjects.WebElementProxy

 

Ну это понятно, вообще лучше в ассерте к webElement.ToString() не обращаться

Вынесете в переменную название вашего контрола и явно передавайте в метод (ну или захардкодьте  не делайте так)

 

Я думаю это будет наилучшем решением. Передавать имя в метод)

Спасибо.

Тема закрыта.

 

А с TextContext - > TestContext.CurrentContext.Test.FullName 

была вот какая беда -  СкринШот был описан в TestFixtureTearDown, а не в TearDown

ну и соответсвенно он мне и передавал только имя проекта и класс.

После переноса в TearDown при вызове TestContext.CurrentContext.Test.Name

возвращает имя теста)

Спасибо всем!!!


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных