Вопрос или проблема
Иконки социальных сетей отсутствуют на странице. А также все под заголовком ‘О нас’. Пытался добавить Thread.sleep на пять секунд, это тоже не помогло.
Ссылка на сайт: https://excurr.io/#/home
Кто-нибудь знает возможные решения или предложения?
Метод:
public boolean isFacebookIconClickable() {
baseTest.scrollToTheBottomOfThePage();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return baseTest.isClickable(FACEBOOK_ICON);
}
Ответ или решение
Проблема, с которой вы столкнулись, связана с тем, что некоторые элементы в нижней части страницы (например, социальные иконки и информация под заголовком "About") не отображаются корректно при запуске тестов Selenium в CI/CD среде. Ниже приведены шаги и рекомендации для устранения данной проблемы.
Возможные причины отсутствия элементов
-
Асинхронная загрузка элементов: Возможно, элементы загружаются асинхронно, и ваш код пытается их найти до того, как они появятся на странице.
-
Различия в окружении: Убедитесь, что окружение CI/CD аналогично вашему локальному окружению. Возможно, есть различия в конфигурации браузера или в самом сервере.
-
Визуальные эффекты или анимации: Также стоит проверить, нет ли каких-либо CSS-анимаций, которые могут мешать отображению элементов.
Рекомендации по исправлению
- Исключение Thread.sleep(): Использование
Thread.sleep()
может быть неэффективным, поскольку время ожидания может варьироваться. Вместо этого используйте явные ожидания.
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public boolean isFacebookIconClickable() {
baseTest.scrollToTheBottomOfThePage();
WebDriverWait wait = new WebDriverWait(baseTest.getDriver(), 10);
wait.until(ExpectedConditions.elementToBeClickable(FACEBOOK_ICON)); // Явное ожидание
return baseTest.isClickable(FACEBOOK_ICON);
}
- Проверка наличия элементов: Убедитесь, что элементы действительно присутствуют на странице. Для этого можно использовать
ExpectedConditions
для проверки их видимости.
public boolean isSocialIconsVisible() {
WebDriverWait wait = new WebDriverWait(baseTest.getDriver(), 10);
return wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("css-селектор-для-иконок"))).isDisplayed();
}
-
Логирование и отладка: Добавьте логирование, чтобы видеть, на каком этапе теста пропадают элементы. Это может помочь в диагностике проблемы.
-
Рассмотрите использование Headless режима: Если вы используете headless браузер в CI/CD, убедитесь, что интерфейс реалистично имитируется. Некоторые элементы могут не загружаться в headless режиме, так как они требуют пользовательского взаимодействия.
Заключение
Проблема с отсутствующими элементами может возникать по различным причинам, включая асинхронную загрузку контента и разницу в окружении. Используя явные ожидания и логирование, вы сможете более точно определить причину и устранить ее. Если указанные решения не помогают, возможно стоит проверить настройки вашего CI/CD окружения и убедиться, что все зависимости и конфигурации настроены корректно.