如何查看按钮是否禁用了课程?

时间:2017-11-02 11:24:58

标签: angularjs jasmine protractor testcase

我有两个按钮。如果一个按钮具有禁用等级而不是其他按钮。现在我想检查一下,如果第一个按钮的类禁用,我需要点击第二个按钮,反之亦然。

我正在尝试下面的代码,但它每次都返回true。根据条件动态添加禁用类。

if (expect(element(by.css('ul#menu [data-selector="holdInventory"]'))
.getAttribute('class')).toEqual('disabled')) {
    console.log('has class');
} else {
    console.log('has not class');
}

任何帮助都会受到赞赏。

3 个答案:

答案 0 :(得分:6)

在量角器中,一切都是承诺。因此,为了执行操作,您需要先解决它,然后验证类值。此外,您不能使用相等,因为元素可以与多个类关联,因此您需要使用包含。

var btn1 = element(by.css('ul#menu [data-selector="holdInventory"]'));
btn1.getAttribute('class')).then(function(cls) {
  if(cls.includes('disabled')) {
    btn1.click();
  } else {
    btn2.click();
  }
});

答案 1 :(得分:0)

您可以通过查询以下内容来检查元素的长度1

let  elements = fixture.debugElement.queryAll(By.css('ul#menu [data-selector="holdInventory"]');
expect(elements.length).toEqual(1); ////////////// 

答案 2 :(得分:0)

您可以使用ng-class动态添加禁用类,具有某些条件,例如

<button ng-class="{'disable' : switchDisable == '1'}"> Disable </button>
<button ng-class="{'disable' : switchDisable == '0'}"> Not Disable</button>

此处switchDisable是一个范围值,您可以在点击$scope.switchDisable = 1按钮时切换,也可以根据需要使用任何其他表达式。 参考:https://docs.angularjs.org/api/ng/directive/ngClass