Как вернуть внутреннее исключение, когда происходит тайм-аут селена?
В настоящее время у меня есть решение с использованием Selenium WebDriver и.NET Framework, использующее следующий код для создания ожиданий взаимодействия с веб-элементами в рамках нашего решения по автоматизации.
wait = new WebDriverWait(webDriver, TimeSpan.FromSeconds(60));
Это хорошо работает для ожидания загрузки элемента на экране, но не содержит наиболее полезного сообщения, например, если элемент не активен, возвращается следующее:
Message: OpenQA.Selenium.WebDriverTimeoutException : Timed out after 60 seconds
Вместо исключения NoSuchElement, которое определяет, какую запись ожидает ввода.
Это становится еще большей проблемой при попытке проверить значение записи, например wait.Until(webdriver => element.GetAttribute("value") == expectedValue);
Поскольку это возвращает проблему тайм-аута, вместо того, чтобы фактически объявлять, в чем заключается разница, которую, например, даст вам Nunit Assert, здесь я работаю над этим со следующими
try
{
customWait.Until(webdriver => element.GetAttribute("value") == expectedValue);
}
catch
{
// to display assertion error when unable to validate attribute in given time
Assert.AreEqual(expectedValue, element.GetAttribute("value"));
}
Есть ли лучший способ, который может переопределить ответ тайм-аута по умолчанию с исходным сообщением внутренней ошибки, например, после x секунд попытки найти элемент возвращает исключение NoSuchElement для поиска элемента, а не TimeoutException.
Спасибо