Вы проверили свое неявное время ожидания?
По умолчанию оно равно 0, но, возможно, вы где-то устанавливаете значение > 2 минут:
driver.manage().timeouts().implicitlyWait(timeInSeconds, TimeUnit.SECONDS);
Если ваше неявное время ожидания больше 0 и вы ищете элемент с
driver.findElements(...);
но ваш элемент НЕ существует, тогда Selenium будет ждать ВСЁ указанное время!
Только Selenium не ждет, когда будет найден хотя бы один элемент. В этом случае он будет искать страницу один раз и немедленно вернется со списком найденных элементов.
Таким образом, findElements() отлично подходит для проверки существования элемента, но подходит только для проверки отсутствия, когда вы указали очень малое неявное время ожидания (или значение по умолчанию 0).
Если по какой-либо причине вам абсолютно необходимо неявное время ожидания > 0, вы можете создать свой собственный метод, который обрабатывает это, как в этом решение.
В вашем случае вы можете установить неявное время ожидания равным 0 прямо перед опубликованным кодом:
driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
// then follows your code:
if(!driver.findElements(By.id(AppConstants.notificationcount)).isEmpty())
{
// DO SOMETHING
}
else
{
System.out.println("No Element available");
}
Если вам нужно неявное время ожидания, отличное от 0 в другом месте, просто установите исходное значение после вашего фрагмента кода.
person
drkthng
schedule
08.08.2015