Привет! При параллельном запуске появляется ошибка (см. ниже) , кто сталкивался, как решали?
Есть тесты написанные на C#, Nunit, Webdriver (NgDriver)
Делаю параллельный запуск тестов в 2 или 4, потока из под Студии с помощью [Parallelizable(ParallelScope.Fixtures)]
Драйвер не статический, в TestBase для каждого класса создается собственный экземпляр драйвера и сюит тестов гоняется в одной сессии
После прохождения 10-15 тестов появляется ошибка
Обычно происходит на тестах где много полей ввода и большое количество проверок в форме
На виртуалке из под Тимсити тоже самое
Если не запускать параллельно, то все ок
Ошибка при обычном запуске локально из под студии и в Тимсити: Message: OpenQA.Selenium.WebDriverException : A exception with a null response was thrown sending an HTTP request to the remote WebDriver server for URL. The status of the exception was UnknownError, and the message was: Only one usage of each socket address (protocol/network address/port) is normally permitted Only one usage of each socket address (protocol/network address/port) is normally permitted
Ошибка при запуске в Selenium Grid локально из под студии
Message: OneTimeSetUp: OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL timed out after 60 seconds.
----> System.Net.WebException : The operation has timed out.
Попробуйте убивать браузер через какое-то количество тестов (если вы его не пересоздаёте перед каждым тестом, что конечно же увеличивает общее время работы).
Но вообще-то это похоже что у вас идёт утечка памяти в тестируемом приложении и надо бы как-то попытаться руками поймать эту ситуацию. Хотябы пройти руками пред-пред-последний, пред-последний и проблемный тест и посмотреть на ресурсы.
Запуск драйвера для каждого теста помогает, но это дополнительно замедлит тесты, которые и так замедляются от параллельности. Надо будет еще попробовать заменить логику поиска при помощи FindElements на Xpath, решил попользоваться думал удобнее будет, но по перфомансу сильное проседание оказывается
А вы используете NgDrver(NgDriver под капотом часто выполняет ExecuteScript метод) или часто выполняете ExecuteScript метод? У вас тесты содержат много действий?
Убрал NgDriver(Protractor) - под капотом часто выполняет ExecuteScript метод
Уменьшил частоту выполнения ExecuteScript во время ожидания страниц, объединил скрипты ожидания в один и выполняю одним разом + выполняю его только после навигации или каких то действий типа клик или ввод
Стал перезапускать драйвер чаще для массивных тестов
Но все равно мне кажется это полностью решит проблему, а позволит ее убрать для тех условий в которых я запускаю тесты
На Java это кстати походу пофиксили. И в Selenium 4 на C# Тут описана эта проблема