Selenium Невозможно поймать StaleElementReferenceException
Я специально спрашиваю, какие проблемы могут быть с моим try/catch
блок, который не описан в проблемах, связанных с этим как "дубликаты".
У меня проблема с тем, что я пытаюсь поймать StaleElementReferenceException
и затем снова ищите элемент, но по какой-то причине исключение не перехватывается. У меня есть метод ниже, и когда я запускаю тест, я получаю StaleElementReferenceException
когда эта строка выполняется, value = element.GetAttribute(attributeName);
, Я предположил (может быть, плохо), что добавление чека в try/catch
и именно поиск исключения позволил бы мне продолжить попытки, пока селен не сможет снова найти элемент. По какой-то причине проблема не обнаруживается, и тест немедленно завершается. Странно, если я изменю блок catch, чтобы просто поймать общее Exception
это работает просто отлично. Я беспокоюсь об этом, хотя я мог бы войти в цикл, который никогда не закончится. Я использую объектную модель страницы для первоначальной инициализации элементов.
bool isStale = false;
string value = "";
do
{
try
{
value = element.GetAttribute(attributeName);
isStale = false;
}
catch (StaleElementReferenceException)
{
element = driver.FindElement(By.XPath(xPath));
isStale = true;
}
} while (isStale == true);
return value;
Это часть трассировки стека:
Тест не выполнен с ошибкой: System.Reflection.TargetInvocationException: Исключение было сгенерировано целью вызова. ---> OpenQA.Selenium.StaleElementReferenceException: ссылка на устаревший элемент: элемент не прикреплен к документу страницы (информация о сеансе: chrome=71.0.3578.98) (информация о драйвере: chromedriver=2.43.600210 (68dcf5eebde37173d4027fa8635e332711d2874a) Windows = платформа.17134 x86_64) в OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) в OpenQA.Selenium.Remote.RemoteWebDriver.Execute (String driverCommandToExecute, Dictionary
2 parameters) at OpenQA.Selenium.Remote.RemoteWebElement.Execute(String commandToExecute, Dictionary
2 параметра) в OpenQA.Selenium.Remote.RemoteWebElement.GetAttribute(String attributeName)