WebDriverWait будет ждать до истечения времени ожидания даже при успешном завершении - PullRequest
0 голосов
/ 31 октября 2018

Я чешу голову от проблемы, с которой сталкиваюсь.

Я определил следующий метод:

private static void WaitSpinner(By locator)
{
    wait.Timeout = TimeSpan.FromSeconds(10);
    wait.PollingInterval = TimeSpan.FromMilliseconds(250);
    wait.Message = "El spinner ha tardado demasiado en desaparecer";

    wait.Until(driver =>
    {
        try
        {
            IWebElement spinner = driver.FindElement(locator);

            if (spinner.Displayed) { return false; }
            else { return true; }
        }
        catch (NoSuchElementException)
        {
            return true;
        }
    });
}

Однако происходят две вещи, которые я не понимаю:

  1. Метод будет ждать до истечения времени ожидания, даже если он наступит
  2. NoSuchElementException будет сообщено событию ExceptionThrown, даже если оно перехватывается методом.

Что я делаю не так?

Спасибо.

1 Ответ

0 голосов
/ 01 ноября 2018

ваш код кажется хорошим. Убедитесь, что вы передали правильный локатор.

  1. Открыть инструмент разработчика в Chrome, используя следующую команду

    CTRL + SHIFT + i

  2. Убедитесь, что xpath (локатор) счетчика точно такой же, как вы передаете в коде.

  3. Также обратите внимание на поведение счетчика в Chrome Dev Tool. Изменить в xpath, когда он скрыт и когда он появляется снова.

...