如何验证是否使用protrator禁用了元素

时间:2018-01-18 12:37:28

标签: angularjs selenium-webdriver protractor automated-tests

我试过以下方法

1)使用isEnabled api

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

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

2)使用禁用属性

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

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

2 个答案:

答案 0 :(得分:0)

disabled属性的类型为boolean,因此将返回true或false。

isEnabled调度命令以查询是否启用了此实例所表示的DOM元素,如disabled属性所指示的那样。

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

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

getAttribute计划命令以查询元素的给定属性的值。它将返回当前值。 getAttribute返回一个字符串,因为disabled属性被认为是一个布尔值,它将返回string类型的'true'或null。

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

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

答案 1 :(得分:0)

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

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

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

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

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

在决定如何编写脚本以进行检查之前,您需要找出开发人员在元素上使用的方式。