В Selenium встроено ExpectedConditions
, которое вы можете использовать с WebDriverWait
для обработки подобных ситуаций.Может случиться так, что ваше ожидание невидимого срабатывает и проходит до того, как загрузчик становится видимым, что может привести к сбою последующих действий, поскольку загрузчик появляется позже.Вы можете добавить ожидание видимого, а затем ожидание невидимого.
By qdLoaderLocator = By.Id("line-scale-loader");
WebDriverWait wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.ElementIsVisible(qdLoaderLocator));
wait.Until(ExpectedConditions.InvisibilityOfElementLocated(qdLoaderLocator));
Примечание: не используйте такие утверждения, как
Assert.IsTrue(Elements.SeeException.Count == 0);
, потому что, когда они терпят неудачу, вы получите
Expected: true
Actual: false
, который ничего вам не говорит.Вместо этого используйте один из следующих вариантов:
Assert.Zero(Elements.SeeException.Count, "Verify no exceptions");
Assert.AreEqual(0, Elements.SeeException.Count, "Verify no exceptions");
Теперь вы получите
Verify no exceptions
Expected: 0
Actual: 2
В этом случае это может показаться не очень полезным, но вы по крайней мере получите больше информации, чем просто true /ложный.Когда вы начнете сравнивать строки, числа и т. Д., Это будет ОЧЕНЬ более полезным.