gpt4 book ai didi

javascript - Protractor - 等待多个元素

转载 作者:可可西里 更新时间:2023-11-01 02:37:37 25 4
gpt4 key购买 nike

我正在尝试等待页面上的多个元素,我不知道可能有多少,但至少会有一个。我了解使用以下方法等待单个元素,效果很好。

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

如有任何帮助,我们将不胜感激。

附注Protracor 的新手及其怪癖。

最佳答案

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);

关于javascript - Protractor - 等待多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34662879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com