我正在使用Protractor 4.0.14来测试Angular应用程序。
最近,我遇到了随机错误,我不明白为什么。这就像Protractor正在失去同步。
我尝试通过自己禁用同步并等待元素存在来防止这种情况发生。 但最后,量角器不会等待加载页面来执行测试,所以我得到了不同的错误,如:
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加载页面时,有时页面未完全加载,并且当ignoreSynchronization为false时,在加载角度之前执行测试。
所以我有点迷失,因为几周前我没有遇到这些问题。它可能是我错过的conf.js中的一个参数,还是一个打破同步的角度超时?欢迎任何想法。
答案 0 :(得分:0)
如果您尝试这样做,您应该避免使用beforeEach和afterEach之类的aSynch - Synch问题:
beforeEach(function(){
browser.ignoreSynchronization = true;
});
afterEach(function(){
browser.ignoreSynchronization = false;
});
同样使用.waitForAngular()而不是ignoreSynch也应该避免一些同步问题。