在量角器测试中,我们必须验证元素是否已更改其值。
例如:
<div>aaa</div> has changed to <div>bbb</div>
<div>
元素始终存在,只会更改值。
由于它的异步,量角器函数element(locatorOfTheDiv).getText()
返回一个承诺,在aaa变为bbb之前总是满足(然后我们得到一个错误的结果)
如何验证元素是否已更改其值?
是否有其他方法可以添加browser.sleep(5000)
?
答案 0 :(得分:1)
如果你的页面没有在Angular世界之外做任何异步,Protractor会自动为你处理这个问题。你可以写:
var myDiv = element(by.css('div.foo'));
expect(myDiv.getText()).toEqual('aaa');
otherButton.click(); // Do whatever causes it to change here.
expect(myDiv.getText()).toEqual('bbb');
如果异步代码在Angular之外,那么Protractor无法知道它。在这种情况下,你需要使用睡眠或等待 - 通常等待更好,因为他们会一直检查,直到值发生变化。
browser.wait(function() {
return myDiv.getText().then(function(text) {
return text == 'bbb';
});
}, 'waiting for div to have text bbb');