赛普拉斯获得一些元素的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 值。
- 提取后直接:
cy.contains('button[id*="dropdown-"]', 'Click here')
.invoke('attr', 'id')
.then((id) => {
cy.log(id) //prints id
})
- 保存在别名
.as
中,稍后使用:
cy.contains('button[id*="dropdown-"]', 'Click here')
.invoke('attr', 'id')
.as('idValue')
cy.get('@idValue').then((idValue) => {
cy.log(idvalue) //prints id
})
我正在尝试获取 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 值。
- 提取后直接:
cy.contains('button[id*="dropdown-"]', 'Click here')
.invoke('attr', 'id')
.then((id) => {
cy.log(id) //prints id
})
- 保存在别名
.as
中,稍后使用:
cy.contains('button[id*="dropdown-"]', 'Click here')
.invoke('attr', 'id')
.as('idValue')
cy.get('@idValue').then((idValue) => {
cy.log(idvalue) //prints id
})