提问者:小点点

量角器随机不会同步到Angular页面


我正在使用量角器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中的参数,还是破坏同步的角度超时?欢迎任何想法。


共1个答案

匿名用户

如果您正在尝试这样做,则应使用beforeEach和afterEach来避免aSynch-Synch问题:

beforeEach(function(){
      browser.ignoreSynchronization = true;
});

afterEach(function(){
      browser.ignoreSynchronization = false;
});

另外,使用. waitForAngular()代替忽略同步也应该避免一些同步问题。