json - 如何读取 Json 并将其属性传递给使用量角器返回承诺的页面方法
问题描述
我需要使用量角器通过 for 循环迭代 Json 的帮助:
我的问题的背景:
- 我有一个返回 REST 服务的 Json 响应的方法。
- 响应在另一种方法中处理,并通过 for 循环进行迭代。在每次迭代期间,id 被传递到页面类(页面对象模型)中元素的 xpath,其中元素被单击并返回一个承诺。
- for 循环内的代码只成功执行一次,其余的迭代中调用页面类方法正在发生,但该页面方法内的元素单击没有发生。
- 我知道在我的代码中通过 for 循环处理承诺有问题。搜索了许多页面和博客,并尝试了他们建议的方式,但没有成功。我只是在下面提到其中一个博客中建议的循环处理 Promise 的一种方法。
对此的帮助非常感谢。
这是我的测试代码:
**Method that returns REST Api response:** This method returns rest api response using node fetch.
getRestApiResponse(resp) {
let nf = require('node-fetch');
let clientHierarchyDtos: ClientHierarchyDto[];
let url = 'some url';
nf(url)
.then(function(response) {
return response.json();
}).then(function(data) {
resp(data);
})
}
ClientHierarchy class: This is the structure of Json data.
export class ClientHierarchyDto {
id: string;
label: string;
name: string;
childLevels: ClientHierarchyDto[];
}
**Test Method code where this response is iterated:**
const rqnsCascadeRestServiceObj: rqnsCascadeRestService = new rqnsCascadeRestService();
let clientHierarchies: ClientHierarchyDto[];
var promises = [];
rqnsCascadeRestServiceObj.getRestApiResponse(function (resp) {
const clientHierarchies = resp;
console.log("hierarchy size: " + clientHierarchies.length);
for (let regionLevelHierarchy of clientHierarchies) {
const rqnsCascadeMeasureDashboardPage: rqnsCascadeMeasureDashboard = new rqnsCascadeMeasureDashboard();
promises.push(rqnsCascadeMeasureDashboardPage.expandAccordian(regionLevelHierarchy.id));
}
Promise.all(promises).then((data) => {
return true;
}, (error) => {
return false;
});
});
**Page class method where element click is happening:** This is the method to which ids from json is passed to element locator and clicking the element.
Accordian:ElementFinder;
expandAccordian(Id:string) {
console.log("accordianId inside: "+ Id);
this.Accordian = element(by.id(Id));
return this.Accordian.click();
}
Please let me know if anything else is needed.
解决方案
推荐阅读
- swiftui - 导航按钮无法关闭模式
- ios - 如何在 Developer Portal 中辨别用于签署配置文件的签名身份
- mule - Mule Web 服务消费者社区版 3.9
- html - Thymeleaf 没有用 ajax 调用替换片段
- .net - 出于某种原因,“大”尝试块的性能是否不如较小的块?
- r - 在 R 中编写一个函数来将新行绑定到数据帧
- json - 使用角度中的rxjs在两个json对象之间替换值
- python - 删除单行 MySQL 表时如何修复“超过锁定等待超时”?
- c# - 如何使用 StorageFolder 从自定义文件夹或位置读取文本文件?
- php - 仅循环浏览已填写自定义字段的帖子