如何在Cypress中获取特定属性值的数组

时间:2019-07-17 16:38:53

标签: testing automation automated-tests cypress end-to-end

我在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”值的数组,将不胜感激。

1 个答案:

答案 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
  });