【发布时间】:2019-05-21 22:48:41
【问题描述】:
我正在使用量角器为非角度应用程序开发端到端 UI 测试用例。我在网页上呈现的 UL 标记内有一堆 LI 标记。我需要获取所有 LI 标记的值并将它们存储在一个数组中,然后检查该数组是否已排序。
checkResultList() {
// element locator for UL
const listResult = element(by.xpath('//*[@id="flightModuleList"]'));
browser.wait(EC.visibilityOf(this.listResult), 60000);
// Get All the LIs as ElementArrayFinder
let items = listResult.all(by.xpath('//li//div[@class="uitk-col all-col-shrink"]//div[contains(@class,"primary-content")]//span[contains(@class, "full-bold")]'));
let prices = [];
items.each(function(ele, index) {
ele.getText().then(function(text) {
// get floating point numbers from string
const price = text.match(/[+-]?\d+(\.\d+)?/g).map(function(v) {
prices.push(parseFloat(v));
return parseFloat(v);
});
})
})
expect(prices.length).toBe(80); // prints 0
}
我希望在检查价格数组的长度之前推送所有值。
【问题讨论】:
-
为什么不使用
setInterval直到长度达到预期? -
@Janak 请注意您已经设置了两次
let prices = [];!第一个是多余的 -
@Mulli 因为使用
setInterval进行轮询是一个可怕的想法,而您只能使用 Promise
标签: javascript async-await jasmine protractor ui-testing