gpt4 book ai didi

angularjs - Protractor : 'wait' 不适用于 "element.all"

转载 作者:行者123 更新时间:2023-12-02 19:59:20 24 4
gpt4 key购买 nike

我编写 Protractor 自动化测试并遇到了问题。 Wait command实际上并不等待数组元素之一。请参阅下面的示例:我尝试在导航到网页后等待第一个元素。

var category = element.all(by.repeater('category in listCtrl.categories'));
var category2 = $$('.category-name.custom-tooltip-link.ng-binding');
var EC = protractor.ExpectedConditions;

describe('wait for the first category', function() {

it('wait', function() {
browser.get('http://www.deep.mg/');

browser.wait(EC.visibilityOf(category.get(0)), 20000);

browser.wait(EC.visibilityOf(category2.get(0)), 20000);
});
});

但是测试失败并出现以下错误:失败:索引超出范围。尝试访问索引为 0 处的元素,但只有 0 个元素与 locator by.repeater("category in listCtrl.categories") 匹配。

错误不依赖于定位器类型,因为同时出现:“by.repeater”和“by.css”。选择器没问题,添加“ sleep ”命令后测试通过:

var category = element.all(by.repeater('category in listCtrl.categories'));
var category2 = $$('.category-name.custom-tooltip-link.ng-binding');
var EC = protractor.ExpectedConditions;

describe('wait for the first category', function() {

it('wait', function() {
browser.get('http://www.deep.mg/');

browser.sleep(15000);

browser.wait(EC.visibilityOf(category.get(0)), 20000);

browser.wait(EC.visibilityOf(category2.get(0)), 20000);

category.count().then(function(count1) {
console.log(count1); //count returns 5, which means there are actually elements in array
});

category2.count().then(function(count2) {
console.log(count2);
});
});
});

超时参数也没有帮助,它只是忽略它并立即失败。

那么问题是如何等待数组的某个元素呢?我错过了什么吗?谢谢。

最佳答案

创建一个自定义预期条件来等待数组中的元素计数大于 0:

function presenceOfAll(elementArrayFinder) {
return function () {
return elementArrayFinder.count(function (count) {
return count > 0;
});
};
}

用法:

browser.wait(presenceOfAll(category), 10000);
browser.wait(presenceOfAll(category2), 10000);

对我有用。

关于angularjs - Protractor : 'wait' 不适用于 "element.all",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34289029/

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