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

Публикации sospectra

5 публикаций создано sospectra (учитываются публикации только с 20 апреля 2023)


#138795 Борьба со "StaleElementReferenceException: Element is no longer at

Отправлено автор: sospectra 04 февраля 2015 - 14:10 в Selenium - Functional Testing

Спасибо за тему! Мне помогли ваши советы найти решение для обхода этой проблемы. предлагаю свой вариант для тех, кто тоже с этим столкнется:

        public bool WaitForElement(Action testMethod)
        {
            try
            {
                testMethod();
            }
            catch (StaleElementReferenceException)
            {
                testMethod();
            }
            catch (ElementNotVisibleException)
            {
                return false;
            }
            catch (NoSuchElementException)
            {
                return false;
            }
            return true;
        }
webDriver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(15));
           
var a = false;
short j = 0;
do
 {
  _Page.SelectCity.Click();
  var b = _Page.WaitForElement(() =>
    {
      _Page.SetCityToSelect("Москва");
      _Page.SelectThisCity.Click();
     });
   a = b;
   j++;
  } while (!a && j < 100);
            
webDriver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5));

Assert.IsTrue(a);

Где:

_Page.SelectCity.Click(); 

- Открытие выпадающего списка с перечнем городов.

_Page.SetCityToSelect("Москва");

- Установка атрибута на строчку списка с названием "Москва" для дальнейшего поиска по нему вот таким образом:

WebDriver.ExecuteJavaScript<string>("$('" + csspath + "').attr('autId','cityToSelect'); return '0';");
public IWebElement SelectThisCity
        {
            get
            {
                return WebDriver.FindElement(By.CssSelector("[autId='cityToSelect']"));
            }
        }

А без кастомного атрибута элемент не получается найти - особенность реализации подгружаемого списка.

 

Клик по элементу выпадающего списка:

_Page.SelectThisCity.Click();

В чем была моя проблема:

  1. Вебдрайвер кликал на выпадающий список.
  2. Пока искал город, чтобы проставить атрибут, список почему-то закрывался.
  3. Если не кликнуть на выпадающий список еще раз, то найденный элемент с проставленным атрибутом становился скрытым, и выбрать его было невозможно (ElementNotVisibleException).
  4. А если кликнуть, то список перезагружался, проставленный атрибут стирался, и элемент нельзя было найти по нему (NoSuchElementException).
  5. Увеличение ImplicitlyWait позволило вызывать StaleElementReferenceException, но успех был через раз. Кстати, на StackOverFlow советуют возвращать обратно на маленькое значение, чтобы другие тесты не стали проходить медленнее.
  6. Без повторов операции по счетчику метод не срабатывает - потому что у меня могут возникнуть все три вида исключений, а задать последовательность операций для всех случаев было сложнее, чем сделать такой цикл.

Итог: Код, которым я поделилась, работает.

 

Если есть альтернативные, более оптимальные пути решения проблемы - буду рада советам.




#138580 Visual Studio зависает намертво при редактировании SpecFlow feature фа

Отправлено автор: sospectra 27 января 2015 - 10:31 в Автоматизированное тестирование

Приветствую!

 

Помогите. пожалуйста, разобраться, почему все время зависает Visual Studio 2013 при редактировании сценариев?

Использую Specflow, русифицировала.

 

Пишу сценарии, при быстром наборе текста вдруг все подвисает, и помогает только убить процесс devenv.exe, не получается даже сохранить изменения перед закрытием.

 

Может, кто-то сталкивался с этим?

 

Гуглёж не помог. Возможно, не правильно подобрала запросы.




#137669 Автоматизация тестирования UI веб-приложения с Silverlight 5. Выбор фр

Отправлено автор: sospectra 15 декабря 2014 - 20:00 в Автоматизированное тестирование

Спасибо вам большое за ответ!

Раз больше нет мнений, буду изучать разбиваемость CUIT тестов

 

Работаю с Coded UI несколько лет, правда автоматизация декстопная, особых проблем не вижу

Сложности развития и поддержки невысоки, чистый c#, никаких выдуманных языков, логика легко разбиваема

Проект отдельно, конечно, можно создать

Если вам удобнее использовать для поиска контролов Xpath посмотрите в сторону http://www.ranorex.com

По поводу TDD для UI тестов, идеи как это сделать существуют, реально чтобы у кого то работало на маломальски большом проекте не видел




#137668 Автоматизация тестирования UI веб-приложения с Silverlight 5. Выбор фр

Отправлено автор: sospectra 15 декабря 2014 - 19:59 в Автоматизированное тестирование

Если кому вдруг будет полезна эта тема, вот информация по "Бутерброду". Может помочь с оценкой.

http://bugscatcher.net/archives/2033




#137565 Автоматизация тестирования UI веб-приложения с Silverlight 5. Выбор фр

Отправлено автор: sospectra 11 декабря 2014 - 18:39 в Автоматизированное тестирование

Готовлю проект по автоматизации тестирования UI веб-приложения. Разработчики используют последнюю версию Silverlight - 5ую. Требуется проверять в браузерах: Chrome, IE и в Safari.

 

Нашла здесь тему, в которой этот вопрос уже поднимался:

http://software-test...-silverlight-5/

Но она 2012 года, комментарии в ней уже не актуальны. Coded UI Test теперь поддерживают Silverlight 5:

https://visualstudio...e0-7dc92131d2da

 

Меня смущают сложности развития и поддержки тестов на CUT. Более привычно работать с Selenium Webriver.

Функции записи последовательности действия меня не интересуют. Я предпочитаю написать классы, позволяющие разделить логику поиска веб-элементов от логики тестов.

Хотелось бы применять принципы Page Object Model при разработке тестов:

http://habrahabr.ru/...rt/blog/138674/

 

Нашла статью компании, которая комбинирует применение Selenium WebDriver и CUT:

http://bugscatcher.net/archives/1540

Не могу до конца понять, применим ли в моем случае такой же подход?

 

Конкретные вопросы (my concerns):

  1. Можно ли создать проект с тестами отдельно от проекта с тестируемым приложением?
    В случае c Selenium WebDriver достаточно указать адрес тестового стенда, на который задеплоен последний билд.
    Предполагалось начать работу с тестами максимально автономно от группы разработчиков.

    А если придется хранить тесты в той же ветке репозитория, что и само тестируемое приложение, то как обосновать разработчикам такую необходимость? (Я имею в виду случай, когда используется только WebDriver.)
     
  2. Как обеспечить поддержку тестирования в разных браузерах?
    Есть информация, что CUIT это не умеют:
    http://www.dotnetcur...le.aspx?ID=1004
     
  3. Если для CUIT обязательно создавать Automation ID для каждого объекта, то почему бы не дать Selenium эти самые id для нахождения веб-элементов и обойтись без CUIT?
    В чем именно проблема тестирования Silverlight приложение с помощью Selenium Webdriver?
     
  4. Если использовать связку Selenium Webdriver + Coded UI Tests, то каким образом между ними будет происходить разделение труда?

 

Сейчас для запуска тестов планирую использовать NUnit. Когда будут рабочие варианты тестов - перейти на Team City, разработчики пользуются им.

Для того, чтобы отчеты о тестах были понятны большой команде (автмаотизатор тестов - 1 штука, ручные тестировщики - ~5, разработчики - пара десятков) обдумываю применение Specflow. Его связка с прогонщиками тестов и с вебдрайвером мне ясна, имеются наработки. Но в комбинированном варианте не знаю, каких проблем ожидать.

 

Долгосрочная перспектива:

1. Кроме регрессионных тестов писать приемочные на новый функционал (TDD)

2. Планируется автоматизировать тестирования нескольких разных веб-приложений компании. Технологический стек одинаковый.

 

Поэтому решение должно быть не сделал-отвязался, а максимально эффективным. Чтобы не скакать от подхода к подходу, используя каждый раз разные инструменты и фреймворки. Нужно сейчас определиться с архитектурой решения, а потом писать тесты как на конвеере.

 

Какие есть еще варианты?

 

Фреймворк White плохо поддерживает Silverlight, а с поддержкой разных браузеров тот еще вопрос. Отпадает.

http://teststack.azu...hite/index.html

 

Silverlight-selenium - существует как приблуда к Selenium RC, который теряет преимущества вебдрайвера перед CUIT.

https://code.google....light-selenium/

 

Не работала еще с Teletrik Test Studio.

http://www.telerik.c...erlight-testing

 

И если уже поднимать вопрос о затратных решениях, то у нас есть лицензия на Test Complete. Но он проигрывает в сравнении с Selenium в вопросе удобства написания и поддержки тестов, к тому же его тесты медленнее работают. Тем не менее есть возможность прикручивания Specflow к тестам Test Complete, что, возможно, поможет в поддержке тестов.

http://smartbear.com...h-testcomplete/

 

Буду признательна за любые комментарии!