我们如何使用一个表达式获取多个元素,例如使用 for 循环
How can we get the multiple elements with one expression like using for loop
我们有 5 个元素,我们需要将所有 5 个元素的文本与一些预期文本相匹配。
说 //div[@class="xyz"]
是公共元素选择器,对于第一个元素我们需要使用 (//div[@class="xyz"])[1]
,依此类推使用 for 循环。
for (i=0; i<xyz.length; i++) {
cy.get('(//div[@class="xyz"])[i]')
}
我如何在 Cypress 中执行此操作?
也许你想要 .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')
}
在 Cypress 测试中,for-loop 是用 .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])
})
我们有 5 个元素,我们需要将所有 5 个元素的文本与一些预期文本相匹配。
说 //div[@class="xyz"]
是公共元素选择器,对于第一个元素我们需要使用 (//div[@class="xyz"])[1]
,依此类推使用 for 循环。
for (i=0; i<xyz.length; i++) {
cy.get('(//div[@class="xyz"])[i]')
}
我如何在 Cypress 中执行此操作?
也许你想要 .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')
}
在 Cypress 测试中,for-loop 是用 .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])
})