Я написал метод IsElementPresent, который возвращает true/false независимо от того, отображается элемент или нет.
Вот мой метод
public static bool IsElementPresent(this IWebElement element)
{
try
{
return element.Displayed;
}
catch (Exception)
{
return false;
}
}
Теперь иногда, когда он должен возвращать false, element.Displayed ожидает примерно 20 секунд (обнаружено с помощью отладки), прежде чем поймать исключение и вернуть false. Если он находит элемент, он работает нормально.
Я также изменил код на:
public static bool IsElementPresent(this IWebElement element)
{
try
{
WebDriverWait wait = new WebDriverWait(DriverContext.Driver, TimeSpan.FromSeconds(0.1));
wait.Until(ExpectedConditions.ElementToBeClickable(element));
return true;
}
catch (Exception)
{
return false;
}
}
Теперь то же ожидание происходит в строке Wait.Until. Код работает нормально, но просто нежелательные задержки, когда он не находит элемент. Имеет ли значение, как элемент найден. Эта конкретная задержка происходит, когда элемент найден по классу. Большинство других элементов можно найти с помощью xpath, css или id. Дайте мне знать, если я пропустил какую-либо информацию. Использование сообщества VS 15.5.6