Имеет место быть следующая проблема.
Есть тесты, написанные на C# для Selenium Webdriver (соответственно, C#-версия драйвера) для некого веб-сайта (ASP + C#).
Под Firefox.
Версия Selenium - 2.35.0.
Тесты запускаются из Visual Studio 2012 (MSTest).
Они отлично проходятся локально в браузере (Firefox последних версий, прямо сейчас стоит 23.0.1).
На разных компьютерах, с разными версиями Windows (Seven, 2008 Server).
Все довольно стабильно, используются всяческие implicit и explicit wait'ы (на сайте много аякса), вылетает что-либо довольно редко.
В какой-то момент тесты подключили к сборке проекта (сайта) в TeamCity (7.1.1, если это важно).
В процессе сборки, как я понимаю, тесты запускаются в неком виртуальном окне (увидеть само прохождение в бразуере невозможно).
И где-то четверть тестов стабильно падает.
На сборочном сервере тоже стоит последняя версия Firefox. И при запуске в браузере (из Visual Studio) все проходится на ура.
Падают тесты стабильно в одних и тех же местах.
Как пример:
_driver.FindElement(By.XPath("//a[contains(text(),'Contracts')]")).Click(); new SelectElement(_driver.FindElement(By.Id("Contracts_Create"))).SelectByText(Data.Add.ContractsCreate); new SelectElement(_driver.FindElement(By.Id("Contracts_Delete"))).SelectByText(Data.Add.ContractsDelete); _driver.FindElement(By.XPath("//a[contains(text(),'Declarations')]")).Click(); new SelectElement(_driver.FindElement(By.Id("Declarations_Menu_Tab"))).SelectByText(Data.Add.DeclarationsMenuTab); _driver.FindElement(By.XPath("//a[contains(text(),'Documents')]")).Click(); new SelectElement(_driver.FindElement(By.Id("Documents_Access_Control_List"))).SelectByText(Data.Add.DocumentsAccessControlList); _driver.FindElement(By.LinkText("Set Types")).Click();
Т.е. кликнули на кнопке (точнее, ссылке) Contracts. Выбрали значения в дропдаунах. Кликнули на ссылку Declarations, выбрали там значение в дропдауне (при этом страница не перезагружалась, исчезли дропдауны для Contracts, появился для Decarations). Затем кликнули на ссылку Documents. Там опять появились новые дропдауны, а еще и кнопка ("Set Types"), которой не было ранее. И на строке
new SelectElement(_driver.FindElement(By.Id("Documents_Access_Control_List"))).SelectByText(Data.Add.DocumentsAccessControlList);т.е. на выборе значения дродауна для Documents - оно стабильно падает. Всегда. С ошибкой "Element is not currently visible and so may not be interacted with". И не доходит дело до клика по SetTypes и действия после. Но тест проходится в браузере. Тоже всегда.
Не помогли explicit wait'ы чуть ли не для каждого элемента (ждет указанное количеств времени и не находит), не помогли адские Thread.Sleep'ы, обращения по другим селекторам и т.д.
Есть еще пара аналогичных мест (в одном появляется text edit после клика на чекбокс - и драйвер не находит это поле ввода, в другом тоже не находит какой-то появляющийся по ходу дела элемент). Тоже стабильно падает в TeamCity и проходится в браузере.
Буду очень рад помощи и мнения.
1. Почему такое происходит?
2. Почему происходит именно в TeamCity, а в бразуере всё OK?
3. Можно ли это как-нибудь вылечить?
Заранее огромное спасибо. Уже кучу времени потерял в попытках наладить и активном гуглении.