量角器检查DOM是否已更改

时间:2015-02-02 13:16:58

标签: angularjs twitter-bootstrap protractor

我有一个引导表单,用户可以在分享给其他人之前进行预览以填写它,但在预览表单中我希望按钮不被禁用但只是对它们没有任何操作。按下它们什么都不做。

我最初的想法是:

var modal = element(by.id('my-modal'));
element(by.id('submit-button')).click();
expect(element(by.id('my-modal'))).toBe(modal);

但是由于项目不相等而导致失败。

我如何使DOM相同?

2 个答案:

答案 0 :(得分:2)

toBe进行参考比较,因此您的示例不起作用,因为您有两个element(by.id('my-modal'))实例。

这取决于你想要比较的内容。如果你想确保DOM是相同的(直到属性和结构),你可以比较生成的html:

var htmlBefore = element(by.id('my-modal')).getOuterHtml();
element(by.id('submit-button')).click();
expect(element(by.id('my-modal')).getOuterHtml()).toBe(htmlBefore);

或者您可以比较文字(即getText())。这实际上取决于你定义的是什么"相同"。

答案 1 :(得分:1)

不是比较元素,而是比较它的getText长度:

var modal = element(by.id('my-modal'));
var m1length;
modal.getText().then(function(text) {
      m1length = text.length;
    });
element(by.id('submit-button')).click();
element(by.id('my-modal')).getText().then(function(text) { 
expect(text.length).toBe(m1length);
});