Обзор настройки и проблем
Тесты проходят гладко на моем локальном компьютере как в управляемом, так и в автономном режиме. Однако они постоянно терпят неудачу в бегуне GitLab CI (среда Windows) как в головном, так и в безголовом режиме.
В дополнение к сбоям в бегуне CI, когда я запускаю эти тесты в безголовом режиме локально , я также получаю кратковременный белый экран, который мигает между тестами. Этого не происходит в режиме Head, где все работает как положено.
Ошибка в CI Runner
В GitLab CI Runner я обнаружение исключения WebDriverTimeoutException, указывающее, что тесты не могут найти элемент с помощью селектора .loading-indicator. Вот сообщение об ошибке:
Код: Выделить всё
Failed GroupingMenu [1 m 4 s]
Error Message:
OpenQA.Selenium.WebDriverTimeoutException : Timed out after 60 seconds
----> OpenQA.Selenium.NoSuchElementException : no such element: Unable to locate element: {"method":"css selector","selector":".loading\-indicator"}
(Session info: chrome=129.0.6668.91)
< strong>Конфигурация драйвера Chrome
Вот настройки ChromeOptions, которые я сейчас использую:
Код: Выделить всё
ChromeOptions options = new ChromeOptions();
options.AddArguments("--headless"); // Only used if headless mode is enabled
options.AddArguments("--window-size=1920,1080");
options.AddArguments("--disable-gpu");
options.AddArguments("--no-sandbox");
options.AddArguments("--disable-dev-shm-usage");
options.AddArguments("test-type=browser");
options.AddArguments("--enable-automation");
options.AddArguments("--disable-infobars");
driver = new ChromeDriver(options);
- Увеличенное время ожидания: Увеличено время ожидания WebDriverWait до 90 секунд, чтобы дать больше времени для появления индикатора .loading-indicator, но элемент по-прежнему не был обнаружен.
- Ожидание загрузки страницы: добавлено ожидание, проверяющее, что документ ReadyState страницы является «завершенным», прежде чем пытаться найти элемент:
< /ол>Код: Выделить всё
driver.Navigate().GoToUrl(url); driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(30); IJavaScriptExecutor js = (IJavaScriptExecutor)driver; String readyState = (string)js.ExecuteScript("return document.readyState"); log.Info("Ready State: " + readyState); - Заголовочный режим в CI: конвейер CI запускался в заголовочном режиме на бегуне GitLab, но тесты также не прошли, что позволяет предположить, что проблема может быть специфичной для среды CI, а не для автономного режима.
- Белый экран в локальном автономном режиме: при запуске тестов в автономном режиме на На моем локальном компьютере между тестами я вижу кратковременную вспышку ярко-белого экрана. Экран не имеет интерактивного окна и исчезает, как только начинается следующий тест. Эта проблема не возникает в режиме заголовка.
Мне интересно, может ли среда выполнения CI GitLab в Windows вызывать какие-либо проблемы с рендерингом или синхронизацией. Возможно, элемент .loading-indicator ведет себя по-другому в CI-исполнителе из-за задержек в сети, различий в среде или некоторых аспектов автономной обработки Chrome в Windows.
Вопрос
Кто-нибудь сталкивался с подобным поведением при использовании Selenium в Windows-версиях GitLab? Или локально столкнулись с белой вспышкой экрана в безголовом режиме? Буду признателен за любые предложения, настройки или способы отладки, которые помогут решить эту проблему.
Будем очень признательны за любую информацию!
Подробнее здесь: https://stackoverflow.com/questions/790 ... -screen-in