【问题标题】:How to verify if an element is disabled using protrator如何使用量角器验证元素是否被禁用
【发布时间】:2018-01-18 12:37:27
【问题描述】:

我尝试了以下方法

1) 使用 isEnabled api

expect(locator.isEnabled()).toEqual('false');

但它失败了,因为 API 总是返回 true。

2) 使用禁用属性

expect(locator.getAttribute('disabled')).toEqual('disabled');

但它失败了,因为 API 返回 null

【问题讨论】:

  • 请分享那个元素的html代码?
  • 在你的html中的代码是什么?它只是属性名称,例如: 还是给定了一个值:?如果是这样,getAttribute('disabled') 在 console.log 中会给你什么?
  • issuelink - 在这里您可以找到一些解决方案。
  • @rrd 请找到 html 代码
  • 正如问题中所写,它返回 null

标签: angularjs selenium-webdriver protractor automated-tests


【解决方案1】:

disabled 属性是布尔类型,因此将返回 true 或 false。

isEnabled 调度一个命令来查询此实例表示的 DOM 元素是否启用,由 disabled 属性决定。

因此,在您的情况下,使用 isEnabled 时应使用以下断言:

expect(locator.isEnabled()).toBe(false);

getAttribute 调度一个命令来查询元素的给定属性的值。它将返回当前值。 getAttribute 返回一个字符串,由于禁用的属性被认为是布尔值,它将返回字符串类型的“true”或 null。

使用 getAttribute 时,您应该使用以下断言:

expect(locator.getAttribute('disabled')).toEqual('true');

【讨论】:

  • 感谢您的回复。问题和答案中的断言肯定不一样。我建议您了解有关 Javascript 数据类型和严格相等比较的更多信息。
【解决方案2】:

据我所知,在 Web 开发中有两种方法可以归档元素禁用。

1) 使用disabled 属性,仅适用于表单控件元素

注意:如果一个表单控件元素定义了disabled属性,无论属性值是'disabled'、'true'、'false'、'1234'还是其他任何值。 Selenium isEnabled() 将始终返回 true。
在这种情况下,您可以使用:expect(locator.isEnabled()).toEqual()

2) 使用 CSS 和 JavaScript,适用于任何 HTML 元素

注意: 在大多数情况下,使用 CSS & JavaScript 的方式来归档禁用目标,开发人员会在元素属性 @ 中添加类名称,例如:'invalid'、'disable'、'ng-invalid' 987654324@。
在这种情况下,您可以使用:expect(locator.getAttribute('class')).toContain('xxx')

您需要了解开发人员在元素上使用了哪种方式,然后才能决定如何编写脚本来检查它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 2017-11-01
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    相关资源
    最近更新 更多