【问题标题】:disabled "label" and disabled "input" Selenium禁用“标签”和禁用“输入”Selenium
【发布时间】:2020-09-18 19:01:47
【问题描述】:

我正在使用 Selenium 进行测试。两 (2) 个页面元素被禁用,一个是“输入”,另一个是“标签”。 我附上了图片来展示他们被禁用的样子。

但是 Selenium 驱动程序不能将“标签”类型断言为禁用,尽管它显然是。

将“标签”和“输入”定义为禁用元素的 FE 开发人员代码有问题吗?

我要断言的代码是:

Assert.assertFalse(driver.findElement(By.xpath("abc").isEnabled());

输入元素:

标签元素:

【问题讨论】:

    标签: javascript html css selenium disabled-input


    【解决方案1】:

    HTML <input> disabled 属性

    禁用的<input> 元素无法使用且无法点击。有时,disabled 属性会设置为阻止用户使用<input> 元素,直到满足其他条件(例如选择下拉菜单、复选框等)。

    根据第一张图片:

    name 属性设置为 destinationCity<input> 被分配了 disabled 属性,可能是为了强制用户填写 originCity 首先。

    同样,根据第二张图片:

    for 属性设置为 settingsDangerousGoods<label> 控制以下 id 属性设置为 <input> 元素settingsDangerousGoods 被分配了 disabled 属性,可能是为了强制用户填写之前的必填字段。

    但是,JavaScript 可以删除禁用的值,并使<input> 元素可用。


    更新

    <label> 的属性应用于 id 属性设置为for='settingsDangerousGoods' 的元素,即以下<input> 元素。但是,您不会与 <label> 交互,但您很可能会与 <input> 元素交互。见docs

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

    【讨论】:

    • 感谢您的解释,但这并没有具体回答我的问题。 Selenium“可以”检测到 元素被禁用,但它“不能”发现
    • @abbas 查看答案更新并让我知道状态。
    • 所以现在,
    • @abbas 为什么您希望<label> 元素的id 属性不需要交互?此外,id 属性不是强制性的。您还有 cssSelectorxpath 定位器策略来定位元素。
    猜你喜欢
    • 2014-08-19
    • 2017-08-06
    • 2020-07-21
    • 2013-06-22
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 2015-10-25
    相关资源
    最近更新 更多