量角器等待多个对象
protractor wait for multiple objects
我正在使用AJAX在DOM中加载这样的东西:
<div class="elm_class"></div>
<div class="elm_class"></div>
<div class="elm_class"></div>
然后我需要等待n个元素出现在量角器测试中。我最好的尝试是:
function needTrue(css,i){
e = element.all(by.css(css));
var EC = protractor.ExpectedConditions;
if(e.length>i){
return EC.presenceOf($$(".heading-description.uplevel").get(m1I));
}else{
return setTimeout(needTrue(css,length),1000);
}
}
browser.driver.wait(needTrue(".elm_class", 3) , 10000);
但它甚至不能以这种方式抛出错误
超过了最大调用堆栈大小。
如果有人能解释我如何将"promise"对象带回等待函数,我将不胜感激。
创建自定义预期条件以等待出现与选择器元素匹配的n
:
function presenceOfAll(elements, n) {
return function () {
return elements.count(function (count) {
return count >= n;
});
};
}
browser.wait(presenceOfAll($$(".elm_class"), 3) , 10000);
这里需要注意的是,presenceOfAll
返回一个函数,browser.wait()
将执行该函数,直到它解析为true
或达到超时。
browser.wait
会自动循环到指定的毫秒数,直到它返回true
,所以您不想在其中放入setTimeout。此外,您还希望使用.count()
而不是.length
来计算.all
找到的元素数
function needTrue(css,i){
e = element.all(by.css(css));
// count the number of elements found
return e.count().then(function(elementCount) {
// if not enough elements, return false so browser.wait will keep looping
return elementCount >== i;
});
};
browser.driver.wait(needTrue(".elm_class", 3) , 10000);
// after waiting for the elements, check whatever
// I don't use EC, so I don't know if this part of the code actually works
var EC = protractor.ExpectedConditions;
expect(EC.presenceOf($$(".heading-description.uplevel").get(m1I))).toBe(true);
相关文章:
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 正在等待加载脚本对象
- 在ES2015中,如何确保所有方法都等待对象初始化?使用ES7装饰器
- 如何等待 <对象> 中的 SVG 在某些 JS 触发之前完成加载
- Javascript 不等待 For 循环.对象值不变
- 等待对象在主干中实例化
- 等待ultil-ajax.html成功加载对象
- 量角器等待多个对象
- defer.promise 不等待对象解析
- 等待对象创建- (JavaScript/AngularJS)
- 如何在调用回调之前等待异步创建的对象完全可用?
- 如何让 toJSON 在 Sails.js 中返回对象之前等待查找
- 等待对象创建完成
- 等待可观察对象订阅Angelar2
- 如何判断一个可观察对象是否在“等待”另一个使用RxJS(例如,用于Ajax请求指示符)
- 等待所有回调完成后再返回对象
- 等待http.get返回对象
- 如何在测试完成工具中等待对象搜索