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, Dictionary2 parameters) at OpenQA.Selenium.Remote.RemoteWebElement.Execute(String commandToExecute, Dictionary2 параметра) в OpenQA.Selenium.Remote.RemoteWebElement.GetAttribute(String attributeName)

0 ответов

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