Я столкнулся с некоторыми проблемами при автоматизации формы, содержащей div с style="display: none;"
У него есть Id, но я не могу использовать его без отладки.
Проблема в том, что есть выпадающий список, который загружает свои параметры только после того, как это «загрузить изображение» исчезает Поэтому я перепробовал множество решений и каждый вариант из SeleniumExtras.WaitHelpers
(потому что старое будет устаревшим в C#).
Чем ближе я получил от решения, тем ниже был этот код: { ссылка }
Вот мой код:
<div id="updateProgress" style="display: none;" role="status" aria-hidden="true" xpath="1">
<div id="divLoading" style="position: absolute; z-index: 10; left: 450px; top: 90px;">
<img id="ajaxLoadNotificationImage" src="../images/ajax-loader-center.gif" alt="[image]">
</div>
</div>
-
WebDriverWait wait = new WebDriverWait(WebDriver, TimeSpan.FromSeconds(90));
wait.Until(WebDriver =>
{
return WebDriver.FindElement(By.Id("updateProgress")).GetAttribute("style").Contains("display: none;");
});
Я тоже пробовал:
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeSelected(By.XPath(profilePage.LoadingStateImg.GetAttribute("style").Contains("display: none;").ToString())));
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.InvisibilityOfElementLocated(By.XPath(profilePage.LoadingStateImg.GetAttribute("style").Contains("display: none;").ToString())));
Не указано выше, но я пробовал: - InvisibilityOfElementWithText - StalenessOf - ElementIsVisible - TextToBePresentInElementValue
Кажется, даже не попадает в эти строки кода во время работы. Отладка показывает текст в порядке с атрибутом «display: none;» и переходит к выбору необходимого выпадающего списка. Я не хочу использовать Thread.Sleep()
, но пока это единственное, что работает. * (Tread.Sleep
работает, но, очевидно, я не пытаюсь войти в него, потому что страница настолько медленная, что мне нужно 40-60 секунд ...)
Заранее спасибо!