当前位置:  开发笔记 > 编程语言 > 正文

量角器 - 等待多个元素

如何解决《量角器-等待多个元素》经验,为你挑选了1个好方法。

我试图在页面上等待多个元素,我不知道有多少可能存在,但至少会有一个.我理解使用以下内容等待单个元素,这很好.

var EC = protractor.ExpectedConditions;
    browser.wait(EC.presenceOf(element(by.css("h3[title='Test Form']"))), 10000);
    expect(element(by.css("h3[title='Test Form']")).isPresent()).toBeTruthy();

我想稍微改变一下等待多个元素,所以尝试了下面的内容(将.all添加到元素中).

var EC = protractor.ExpectedConditions;
    browser.wait(EC.presenceOf(element.all(by.css("h3[title='Test Form']"))), 10000);
    expect(element.all(by.css("h3[title='Test Form']")).isPresent()).toBeTruthy();

不幸的是,当我尝试这个我得到

Cannot read property 'bind' of undefined

任何有关这方面的帮助将非常感谢.

ps新手Protracor及其怪癖.



1> alecxe..:

presenceOf期望传递单个元素(ElementFinder).

您需要一个自定义的预期条件等待.如果我理解正确,你需要等到N个元素存在.以下是如何做到这一点:

function waitForCount (elementArrayFinder, expectedCount) {
    return function () {
        return elementArrayFinder.count().then(function (actualCount) {
            return expectedCount === actualCount;  // or <= instead of ===, depending on the use case
        });
    };
};

用法:

var forms = element.all(by.css("h3[title='Test Form']"));
browser.wait(waitForCount(forms, 5), 10000);

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有