从要使用Protractor测试的服务器异步加载的动态数据列表的列表
List of dynamic data lists loaded asynchronously from server to be tested with Protractor
我有一个由列表列表组成的布局。
在用户单击的每一行上,都会从服务器中检索其子列表,并显示一些信息,其中包括货币数量。
我如何对所有列表项<ul> -> <li>
和每个元素块进行迭代,或者等待数据被检索和呈现,以便测试呈现的数量是否正确?
当然,所有这些都使用protractor
。
以前尝试过使用类似的东西:
var listItemsSelection = element.all(by.css('.listItem')),
listItemsExpandSelection = element.all(by.css('.icons-Expand'));
describe('Data screen - Rows', function () {
//Given
beforeEach(function () {
for (var i = 0; i < listItemsExpandSelection.count(); i++) {
listItemsExpandSelection.get(i).click();
browser.wait(function() {
return browser.isElementPresent(elm);
}, 500);
}
});
it('Element exist and is informed properly', function () {
listItemsExpandSelection.each(function (el) {
var elm = el.element(by.css(".amountCell"));
expect(el.element(by.css('amountCell'))).toBe('5,50 €');
});
});
});
通过执行:
listItemsExpandSelection.each(function (element, index) { element.click(); });
这是迭代选择的另一种方式,我得到一个错误,如:"未知错误:未知错误:元素在点(941524)不可点击。其他"。因为,在每个单击的行上,都会检索并显示新数据,所以下一个同级数据会被向下推一点,因此不可单击。
HTML片段如下:
当第一行仍未点击时:
<ul>
<li class="listItem"><i class="icons-Expand"></i></li>
<!-- n elements -->
</ul>
点击并等待几毫秒后:
<ul>
<li class="listItem">
<i class="icons-Expand"></i>
<ul>
<li class="listSubItem"></li>
<!-- n sub-elements -->
</ul>
</li>
<!-- n elements -->
</ul>
有什么想法吗?
我认为您应该单击li
元素并等待子列表出现:
var EC = protractor.ExpectedConditions;
listItemsSelection.each(function (el) {
el.click();
browser.wait(EC.presenceOf(el.element(by.css("li.listSubItem"))), 10000);
// make expectations
});
相关文章:
- 要求输入在数据列表中
- 从javascript创建一个列表
- 如何使用jQuery选择下拉列表的值
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- Javascript按钮下拉列表
- 如何使用json将对象列表从java转换为javascript
- 区分JSON中的矩阵和列表列表
- jQuery表单添加不适用于下拉列表
- esri javascript异步打印
- 从要使用Protractor测试的服务器异步加载的动态数据列表的列表
- NodeJS:如何使用异步.js来处理数据库中的项目列表
- 流星客户端异步模式 / 如何为订阅列表和回调实现 waitOn
- node.js:将一个异步函数列表应用于列表列表中的每一项
- 如果过滤函数是异步的,如何使用lodash过滤列表
- 函数返回一个只能异步获取的值列表
- 如何正确地按顺序调用异步函数列表
- Javascript:异步遍历列表的列表
- Javascript蓝鸟承诺->从异步列表中获取第一个文件
- 用生成器异步调用列表的每一项