我在DOM中有一些元素,每个元素都有自己的属性“ id”。我需要创建一个迭代所有这些元素并将值推入数组的函数。这个故事的美好结局是该函数将为我提供具有所有“ id”值的数组。
我已经尝试过了:
function getModelIds() {
let idList = [];
let modelId;
cy.get(someSelector).each(($el) => {
cy.wrap($el).invoke('attr', 'id').then(lid => {
modelId = lid;
idList.push(modelId);
});
});
return idList;
}
如果您能帮助我将这段代码重写为一个函数,该函数将返回具有所有“ id”值的数组,将不胜感激。
答案 0 :(得分:0)
您可以拥有a custom command:
Cypress.Commands.add(
'getAttributes',
{
prevSubject: true,
},
(subject, attr) => {
const attrList = [];
cy.wrap(subject).each($el => {
cy.wrap($el)
.invoke('attr', attr)
.then(lid => {
attrList.push(lid);
});
});
return cy.wrap(attrList);
}
);
您以后可以像这样使用它:
cy.get(someSelector)
.getAttributes('id')
.then(ids => {
cy.log(ids); // logs an array of strings that represent ids
});