【发布时间】:2022-10-15 03:54:04
【问题描述】:
我正在使用什么:
<ul class="abc">
<li class="xyz">
<a href="www.something.com">
<div>
<h2>
<div>
<div class="theText">
<div>Get this text</DIV>
</div>
</div>
</h2>
</div>
</a>
<button aria-label="remove">...</button>
</li>
<li class="xyz">...Same stuff here as above li...</li>
<li class="xyz">...Same stuff here as above li...</li>
<li class="xyz">...Same stuff here as above li...</li>
</ul>
button 这里的aria-label 属性有两种状态,即删除(用于单击按钮时)和添加(用于尚未单击按钮时)。
我想要达到的目标:
我想获取<a> 标签中的值,在本例中为“获取此文本”,但仅当同一 <li> 标记内的按钮设置为 aria-label="remove" 时。我还将存储我在一个数组中获得的值,以便稍后与另一个数组进行比较。
我试过的:
let myArray: any = []
cy.get('li[class="xyz"]').each(($element) => {
cy.get('li[class="xyz"]').within(($element) => {
cy.wrap($element)
.find('button[aria-label="remove"]')
.find('div[class="theText"]')
.invoke('text').then(text => {
myArray.push(text)
})
})
}).then(() => {
cy.wrap(myArray).as('myArray')
})
使用上面的代码,我得到了这个Assertion Error from Cypress。
【问题讨论】:
-
没有用过柏树。但是,如果我理解但首先你为什么不做 cy.get('li.xyz')?此外,您正在查询所有特定的 li 项目,并且对于每个项目,您都试图找到另一个
.xyz元素?但是,根据提供的标记,不存在其他 .xyz -
@ManosKounelakis - 所有其他
<li>标签都具有相同的class="xyz"。让我更新帖子,谢谢。 -
您可以删除
cy.get('li[class="xyz"]').within()行,因为您正在包装$element并在其中使用.find()- 并 find 做几乎相同的事情。
标签: javascript typescript cypress cypress-each