#c# #selenium #selenium-webdriver
#c# #селен #selenium-webdriver
Вопрос:
Я пишу автоматические тесты для веб-приложения, и у меня проблема с задержкой. Я не хочу использовать sleeps в своем скрипте, поэтому я написал следующее:
public bool WaitForPageToLoadCompletely()
{
return new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(d =>
((IJavaScriptExecutor)d).ExecuteScript("return document.readyState").Equals("complete"));
}
Но это работает только для всей страницы, но не для элементов на странице.
Я ищу что-то вроде этого, но для элемента.
Спасибо!
Комментарии:
1. У вас также нет другой команды для ожидания элементов, обходным решением было бы добавить ожидание после определенного элемента для каждой страницы
Ответ №1:
Элемент не имеет ‘состояния готовности’. Вам нужно подождать, пока элемент не будет доступен для поиска или пока его свойство атрибута не получит ожидаемое значение (например, если оно скрыто, вам нужно подождать, пока оно не станет видимым, например:
{
return new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(d =>
!d.FindElement(By.Id("Id").GetAttribute("style").Contains("display: none"));
}
Комментарии:
1. Спасибо! В моем случае страница загружается быстро, а затем элемент на ней, и я не хочу использовать sleeps.