Я использую пользовательское условие, которое нажимает кнопку до тех пор, пока она не переходит в метод, который выглядит следующим образом:
public bool UntilGone(By targetLocator)
{
Waits.Default.Until(ExpectedConditions.ElementToBeClickable(targetLocator));
return Waits.Default.Until(d =>
{
try
{
_Action.Invoke(d.FindElement(targetLocator));
}
catch (StaleElementReferenceException) { }
catch (NoSuchElementException) { }
Thread.Sleep(200); // this one here
return ExpectedConditions.InvisibilityOfElementLocated(targetLocator).Invoke(d);
});
}
По какой-то причине, пока я не добавил Thread.Sleep(200)
, он не выполнил условие и бросилисключение тайм-аута.
Почему это?Элемент по-прежнему исчезает после щелчка, он все равно пытается щелкнуть по нему, перехватить все исключения, выполнить условие невидимости и правильно завершить ожидание.Но это не так.Исключение тайм-аута предполагает, что элемент считается видимым, когда его явно нет.Что мне здесь не хватает?Почему Thread.Sleep
имеет значение?