Как вернуть внутреннее исключение, когда происходит тайм-аут селена?

В настоящее время у меня есть решение с использованием 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.

Спасибо

0 ответов

Другие вопросы по тегам