赛普拉斯获得一些元素的ID

Cypress get the ID of some element

我正在尝试获取 Cypress 中某个元素的 ID。因为它的 ID 随机变化(是的,这很奇怪,但它是 angular)。

例如我有一个<button id="dropdown-1" class="someclass"><span>Click here</button>

因为我不能依赖那个ID,因为我在页面上做了一些操作后变成了dropdown-2等等,我想知道,当前的ID名称是什么。

我试过类似的方法:

cy.get('button > span').contains('Click here').find("id");

但这似乎不是正确的方法。

我也试过:

  cy.get('button > span').contains('Click here')
  .invoke('attr', 'id')

这个效果不太好。

您可以结合使用文本和选择器,其中包含您的 id 值的不变部分。类似于:

cy.contains('button[id*="dropdown-"]', 'Click here').invoke('attr', 'id')

现在您可以通过两种方式使用 id 值。

  1. 提取后直接:
cy.contains('button[id*="dropdown-"]', 'Click here')
  .invoke('attr', 'id')
  .then((id) => {
    cy.log(id) //prints id
  })
  1. 保存在别名.as中,稍后使用:
cy.contains('button[id*="dropdown-"]', 'Click here')
  .invoke('attr', 'id')
  .as('idValue')
cy.get('@idValue').then((idValue) => {
  cy.log(idvalue) //prints id
})