我们有5个元素,我们需要将所有5个元素的文本与期望的文本相匹配。
假设//div[@class="xyz"]
是公共元素选择器,对于第一个元素,我们需要使用(//div[@class="xyz"])[1]
,以此类推,使用for循环。
for (i=0; i<xyz.length; i++) {
cy.get('(//div[@class="xyz"])[i]')
}
如何在Cypress中执行此操作?
在Cypress测试中使用.each()
const expectedText = ['a', 'b', 'c', 'd', 'e']
cy.xpath('(//div[@class="xyz"]')
.each(($el,index) => {
expect($el.text()).to.eq(expectedText[index])
})
或
const expectedText = ['a', 'b', 'c', 'd', 'e']
cy.get('div.xyz')
.each(($el,index) => {
expect($el.text()).to.eq(expectedText[index])
})
也许您想要.eq()
命令?
cy.get('(//div[@class="xyz"])').eq(i)
您可以使用forEach
循环来遍历文本。在XPath中,可以使用forEach循环中的索引值。比如:
var textArray = ['text1', 'text2', 'text3', 'text4', 'text5']
for (let [index, text] of textArray.entries()) {
cy.xpath(`//div[@class="xyz"])[${index}]`).should('have.text', text)
}
如果你只有一个文本你想要验证5个元素,你可以使用传统的5次迭代的for循环,比如:
for (let i = 0; i < 5; i++) {
cy.xpath(`//div[@class="xyz"])[${i}]`).should('have.text', 'some text')
}