Angularjs 量角器检查DOM是否已更改

Angularjs 量角器检查DOM是否已更改,angularjs,twitter-bootstrap,protractor,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保持相同?与其比较元素,不如比较其ge

我有一个引导表单,用户可以在分享给其他人填写之前进行预览,但在预览表单中,我希望按钮不被禁用,而只是对它们没有任何操作。逼迫他们根本无济于事

我最初的想法是:

var modal = element(by.id('my-modal'));
element(by.id('submit-button')).click();
expect(element(by.id('my-modal'))).toBe(modal);
但这失败了,结果是项目不相等


如何使DOM保持相同?

与其比较元素,不如比较其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);
});

toBe
进行引用比较,因此您的示例不起作用,因为您有两个
元素实例(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()
)。它实际上只是取决于您定义为“相同”的内容。

可能比较它的长度属性会起作用吗?getText返回一个承诺,因此getText()。长度是未定义的,而第一个会起作用。第二,比较两个getText()承诺应该是可行的,因为它们都来自同一个变量