量角器/ Web驱动程序:检测何时将类添加到Element

时间:2014-08-04 15:26:20

标签: selenium-webdriver protractor

这是按钮的代码。基本上单击按钮时,它会变为蓝色

 <button id="testbutton" type="button" ng-class="selected('test')" ng-click="isMultiple('test')">test</button>

在浏览器中,它基本上来自

class = btn btn-block btn-lg ts-btn-default

class = btn btn-block btn-lg ts-btn-blue

我已经有了原始元素的var。如何让量角器检测到 ts-btn-blue ?我应该只使用不同的类创建另一个元素并执行

  

isdiplayed()

对于那个还是有更好的方法?

1 个答案:

答案 0 :(得分:2)

点击后检查班级是否存在:

expect(yourElm.getAttribute('class')).toContain('ts-btn-blue');

如果您遇到时间问题,例如您的测试失败,因为expect()在html实际到达DOM之前运行,您可能会发现我在下面实际使用的内容很有用。

expect(yourElm).toHaveClass('ts-btn-blue');

Here一个Jasmine 1.3.x自定义toHaveClass匹配器,支持否定.not加上等待最多5秒(或您指定的任何内容)。

Find the full custom matcher to be added on your onPrepare block in this gist

样本用法:

it('test the class finder custom matcher', function() {
    // These guys should pass OK given your user input
    // element starts with an ng-invalid class:
    expect($('#user_name')).toHaveClass('ng-invalid');
    expect($('#user_name')).not.toHaveClass('ZZZ');
    expect($('#user_name')).toNotHaveClass('ZZZ');
    expect($('#user_name')).not.toNotHaveClass('ng-invalid');
    // These guys should each fail:
    expect($('#user_name')).toHaveClass('ZZZ');
    expect($('#user_name')).not.toHaveClass('ng-invalid');
    expect($('#user_name')).toNotHaveClass('ng-invalid');
    expect($('#user_name')).not.toNotHaveClass('ZZZ');
});

更新

这只适用于ElementFinders。一旦this jasminewd PR #9合并,就可以在WebElements上工作。