Selenium Webdriver C# element.Enabled 当元素仍处于禁用状态时评估为 true

Chr*_*ris 5 c# selenium-webdriver

我的自动化测试过去运行顺利,但我们将 QA 环境移至不同的服务器,现在测试失败,因为它不断尝试单击仍在加载且变灰/禁用的元素。以下是在以前的服务器上运行良好的部分代码:

while ( less than 7 seconds )
if (driver.FindElements(by).Count > 0)
{
      if (driver.FindElement(by).Enabled && driver.FindElement(by).Displayed)
            break;
}
else 
{ go back to while loop }
Run Code Online (Sandbox Code Playgroud)

问题是,当页面显然仍在加载并且整个页面仍然呈灰色时, driver.FindElement(by).Enabled 不断评估为“true”(我在调试过程中发现),导致驱动程序继续尝试单击在灰色的元素上,然后测试当然会失败并出现异常。有人遇到过这种问题吗?我使用 Webdriver 与 C# 和 NUnit,在 IE 中运行测试。谢谢。

Cyn*_*ker 5

Enabled 方法仅适用于输入元素和单选按钮。对于非输入元素,请使用 GetAttribute("disabled")。如果disabled =“disabled”,则返回“true”;如果仍然启用,则返回null。


小智 3

很老的问题,但以防万一我仍然会回复。答案就在IWebElement.Enabled的帮助中。它引用了

除了显式禁用的输入元素之外,Enabled 属性通常会为所有内容返回 true。