我正在使用量角器4.0.14测试一个角度应用。
最近,我一直收到随机错误,我不明白为什么。这就像量角器正在失去同步。
我试图通过自己禁用同步并等待元素出现来防止这种情况。但最终,量角器不需要等待页面加载来执行测试,所以我得到了不同的错误,比如:
stale element reference: element is not attached to the page document
或者这个:
document unloaded while waiting for result
例如,在10次执行中,我可能会在下面一行得到一个错误:
return $('#information-email').getAttribute('value') != '';
在做任何事情之前,我尝试等待元素完全加载了里面的内容。由量角器执行的普通waitForAngular不会等待字段填充,因此我禁用了同步,即使它实际上是一个有角度的页面。但它没有等到元素。
it('Should change user email', function() {
$('#information-email').clear().sendKeys(browser.params.login.userExtra);
$('#my-information button[type="submit"]').click();
browser.ignoreSynchronization = true;
browser.wait(function () {
return $('div.toast.toast-success').isPresent();
});
browser.ignoreSynchronization = false;
expect($('div.toast.toast-success').isPresent()).toBe(true);
$$('button.toast-close-button').each(function (item) {
item.click();
});
});
it('Should check that the user is saved', function() {
browser.ignoreSynchronization = true;
browser.wait(function () {
return $('#information-email').getAttribute('value') != '';
});
browser.ignoreSynchronization = false;
expect($('#information-email').getAttribute('value')).toEqual(browser.params.login.userExtra);
});
此外,当我加载带有browser.get的页面时,有时页面没有完全加载,并且在加载角之前执行测试,当忽略同步为假时。
所以我有点迷茫,因为几周前我没有这些问题。可能是我错过的conf.js中的参数,还是破坏同步的角度超时?欢迎任何想法。
如果您正在尝试这样做,则应使用beforeEach和afterEach来避免aSynch-Synch问题:
beforeEach(function(){
browser.ignoreSynchronization = true;
});
afterEach(function(){
browser.ignoreSynchronization = false;
});
另外,使用. waitForAngular()代替忽略同步也应该避免一些同步问题。