Я использую Selenium 2 WebDriver в С# для автоматизации страницы ввода. Существует элемент управления сводкой проверки, который скрыт при загрузке модели DOM. Вот как это выглядит при дополнительной нагрузке.
<div id='validation_summary' style='display: none'>
<div id='validation_message'/>
Когда мой pageObject инициализируется в Selenium, для свойства Displayed WebElement устанавливается значение «false». Этого я и ожидал.
После нажатия кнопки отправки dom меняется на:
<div id='validation_summary' style='display: block'>
<div id='validation_message'>
<div><a>Fix Me</a></div>
</div>
Когда я пытаюсь получить доступ к WebElement следующим образом, после того, как выдается щелчок для проверки, свойство Displayed по-прежнему имеет значение «false», а добавленный div не отображается:
var validation = new WebDriverWait(_driver, TimeSpan.FromSeconds(10)).Until<IWebElement>((d)=>d.FindElement(By.Id('validation_message'));
Должно ли это на самом деле работать? Должен ли я ожидать, что Selenium будет достаточно сообразительным, чтобы оценить DOM в его текущем состоянии? Как он на самом деле оценивает свойство Displayed элемента? Если я посмотрю на свойство PageSource, я увижу, что текст присутствует. Я не понимаю, почему я не вижу, чтобы мои изменения отражались в Selenium.