我在 C# 中使用 Selenium 2 WebDriver 来自动化输入页面。加载 DOM 时隐藏了一个验证摘要控件。这是它在额外负载下的外观。
<div id='validation_summary' style='display: none'>
<div id='validation_message'/>
当我的 pageObject 在 Selenium 中初始化时,WebElement 的 Displayed 属性设置为“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 反映我的变化。