使用invoke()获取属性值



我试图得到一个属性的值和做的东西与它。我读了文档,我认为我严格遵循了它所说的,这是我想要实现的非常简单的东西。

我有一个像这样的HTML元素:<span class="mySpan" data-test-count="8" />,我想读取data-test-count的值,所以我像这样:

cy.get('.mySpan').invoke('attr', 'data-test-count').then((count) => cy.log(count))

它没有记录任何内容,但对我来说似乎是我在这里的文档中找到的相同方法。

cy.get('input')
.invoke('getKendoDropDownList')
.then((dropDownList) => {
// yields the return of $input.getKendoDropDownList()
return dropDownList.select('apples')
})

奇怪的是,我实际上能够获得该属性的值,这运行得很顺利:

cy.get('.mySpan').invoke('data-test-count').should('equal', '8') // this passes :O

更新:

似乎这个问题只发生在通过映射数组创建的元素上。下面显示一些更详细的代码:

这是我的组件(它是React)

<Container>
<span className="mySpan" data-test-count="8">
ciao
</span>
{counts.map((count) => (
<Info
className={`counter-${count.name}`}
key={count.name}
data-test={`counter-${count.name}`}
data-test-count={count.count}
>
{`${t(`${modelName}.${count.name}`)} (${count.count ?? 0})`}
</Info>
))}
</Container>

这没有记录任何内容(试图获取Infos中的一个的值),但是该元素是可见的并且.should('be.visible')通过。

cy.get('.counter-active')
.should('be.visible')
.invoke('attr', 'data-test-count')
.then((count) => cy.log(count))

8:

cy.get('.mySpan')
.should('be.visible')
.invoke('attr', 'data-test-count')
.then((count) => cy.log(count))

只需添加"调用:

cy.get('.mySpan').invoke('attr', 'data-test-count').then((count) => cy.log(count));

最新更新