如何断言文本框已启用或已禁用

How to assert the text box is enabled or disabled

我想断言特定文本框是禁用还是启用。下面是它的 HTML。禁用和启用文本框之间的区别仅在于末尾的 disabled 属性。

disabled text box HTML:
     <input controlid="txtIPAddress" class="textfield form-control servicefield invItem_dynamic_validation valid" id="OrderProperties_4__Value" isdisabled="true" name="OrderProperties[4].Value" style="display:" type="text" value="" disabled="">

enagled text box HTML- 
<input controlid="txtIPAddress" class="textfield form-control servicefield invItem_dynamic_validation valid" id="OrderProperties_4__Value" isdisabled="true" name="OrderProperties[4].Value" style="display:" type="text" value="">

我试过element.isEnabled()element.isEnabled()方法都没有用。 非常感谢任何帮助!

已启用()

根据 documentation isEnabled() 方法定义为:

boolean isEnabled()

Description: 
    Is the element currently enabled or not? This will generally return true for everything but disabled input elements.

Returns:
    True if the element is enabled, false otherwise.

因此,您的代码试验 element.isEnabled() 非常适合检索元素是否 enabled 或未提供的状态element 唯一标识了您在问题中提供的 node

备选

作为替代方案,您可以尝试使用以下解决方案验证是否存在没有 属性 禁用 的元素:

try {
    driver.findElement(By.xpath("//input[@class='textfield form-control servicefield invItem_dynamic_validation valid' and not(disabled)][@controlid='txtIPAddress']"));
    System.out.println("Element is enabled");
} catch (NoSuchElementException e) {
    System.out.println("Element is not enabled");
}

要断言文本框可编辑,我们可以使用isEnabled()函数。 请参阅下面的示例,

boolean anytextfield = driver.findElement(By.xpath("respectivexpath")).isEnabled();
Assert.assertEquals(anytextfield,true);