如何使用量角器测试元素是否具有类?
我正在尝试量角器以e2e测试Angular应用程序,但还没有弄清楚如何检测元素是否具有特定的类。
就我而言,测试单击了提交按钮,现在我想知道form [name =“ getoffer”]是否具有类.ngDirty。有什么解决方案?
describe('Contact form', function() {
beforeEach(function(){
browser.get('http://localhost:9000');
element(by.linkText('Contact me')).click();
});
it('should fail form validation, all fields pristine', function() {
element(by.css('.form[name="getoffer"] input[type="submit"]')).click();
expect(element(by.name('getoffer'))).toHaveClass('ngDirty'); // <-- This line
});
});
-
您必须注意的是,使用时要注意的一个问题
toMatch()
是部分匹配。例如,假设您有一个可能具有类correct
和的元素incorrect
,并且您想测试它是否具有类correct
。如果要使用expect(element.getAttribute('class')).toMatch('correct')
,即使元素具有incorrect
类,也将返回true
。我的建议:
如果您只想接受完全匹配,则可以为其创建一个辅助方法:
var hasClass = function (element, cls) { return element.getAttribute('class').then(function (classes) { return classes.split(' ').indexOf(cls) !== -1; }); };
您可以这样使用它(利用
expect
自动在量角器中兑现承诺的事实):expect(hasClass(element(by.name('getoffer')), 'ngDirty')).toBe(true);