Protractor 量角器规格泄漏

Protractor 量角器规格泄漏,protractor,angular-promise,Protractor,Angular Promise,我对承诺之类的东西还很陌生,我需要一些帮助来解决这个问题。我的一个it块不会在下一个块开始出现StaleElementReferenceError之前结束,这是一个完整的specfile,以后应该从其中调用代码 js(我知道它看起来很奇怪,但我这样设置是出于一个无关的原因): 我认为您应该将测试准备代码移动到beforeach(): 您可能还需要使用: 假设filter()返回一个承诺。由于alecxe建议使用done()找到了解决方案,我在谷歌搜索了一下后使用了以下内容 it('statusf

我对承诺之类的东西还很陌生,我需要一些帮助来解决这个问题。我的一个it块不会在下一个块开始出现StaleElementReferenceError之前结束,这是一个完整的specfile,以后应该从其中调用代码

js(我知道它看起来很奇怪,但我这样设置是出于一个无关的原因):


我认为您应该将测试准备代码移动到
beforeach()

您可能还需要使用:


假设
filter()
返回一个承诺。

由于alecxe建议使用done()找到了解决方案,我在谷歌搜索了一下后使用了以下内容

it('statusfilter', function () {
        P.listView.filter('status', H.regStatus.S.inProgress);
    });
    it('statusfilter works', function () {
        protractor.promise.controlFlow().execute(function () {
            return P.listView.checkFilters([{
                on: H.lang.S.status,
                values: [H.regStatus.S.inProgress]
            }]);
        });
    });

在这里找到:

什么是
p.listView.filter
?谢谢。哦,对不起,P.listview是我为包含listview.js文件的视图制作的页面对象。filter方法实际上是激活页面上的过滤器的方法,但我在文章中没有提到这些方法,因为它们完全不相关,而且要发布的代码已经很多了:POkay,但是在这种情况下,
filter()
可能是问题所在。您是否有任何理由将
filter()
调用放入
it()
而不是,比如说,
beforeach()
?是的,我不想每次都应用相同的过滤器,所以每次我想测试一个过滤器时,我都会使用一个新的过滤器并激活一个新的过滤器,之后,我可以测试过滤器是否工作。我不会使用beforeach,但我会研究使用done函数,尽管它看起来有点混乱:/
describe('LV_00:', function () {

    it('statusfilter', function () { 
        P.listView.filter('status', H.regStatus.S.inProgress);
    });
    it('statusfilter works', function () {
        P.listView.checkFilters([{
            on: H.lang.S.status,
            values: [H.regStatus.S.inProgress]
        }]);
    });

});
describe('LV_00:', function () {
    beforeEach('statusfilter', function () { 
        P.listView.filter('status', H.regStatus.S.inProgress);
    });

    it('statusfilter works', function () {
        P.listView.checkFilters([{
            on: H.lang.S.status,
            values: [H.regStatus.S.inProgress]
        }]);
    });
});
describe('LV_00:', function (done) {
    beforeEach('statusfilter', function () { 
        P.listView.filter('status', H.regStatus.S.inProgress).then(function () {
            done();
        });
    });

    it('statusfilter works', function () {
        P.listView.checkFilters([{
            on: H.lang.S.status,
            values: [H.regStatus.S.inProgress]
        }]);
    });
});
it('statusfilter', function () {
        P.listView.filter('status', H.regStatus.S.inProgress);
    });
    it('statusfilter works', function () {
        protractor.promise.controlFlow().execute(function () {
            return P.listView.checkFilters([{
                on: H.lang.S.status,
                values: [H.regStatus.S.inProgress]
            }]);
        });
    });