Selenium Невозможно поймать StaleElementReferenceException - PullRequest
0 голосов
/ 19 декабря 2018

Я специально спрашиваю, какие могут быть проблемы с моим 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 = платформа0,17134 x86_64) на OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError (Response errorResponse) в OpenQA.Selenium.Remote.RemoteWebDriver.Execute (String driverCommandToExecute, словарь 2 parameters) at OpenQA.Selenium.Remote.RemoteWebElement.Execute(String commandToExecute, Dictionary 2 параметров) при OpenQA.Selenium.Remote.RemoteWebElement.GetAttribute (String attributeName)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...