我將 Div 元素推入一個陣列,然后一個一個地迭代每個元素,但是當我從每個部分的第一個出來時,陣列長度變為 0,我無法進入 for 回圈。
在 for 回圈中,我想單擊每個 div 中的一個部分并執行斷言并回傳到上一節。
let Array =[]
cy.get('.tag-wrapper-item').each(($pills) => {
cy.log($pills)
// cy.log('Success')
Array.push($pills)
cy.log(Array.length)
})
cy.log(Array.length)
for (const element of Array) {
cy.wrap(element).click()
cy.wrap(element).find('.--tag.tag-link.--active.tag-selector-button-link').click()
var OneOffModel = element.text()
cy.get('.heading-markdown').contains(OneOffModel)
cy.go('back')
}
uj5u.com熱心網友回復:
賽普拉斯命令異步,因此在賽普拉斯遍歷您的陣列時,它尚未初始化。
then要解決此問題,您可以使用回呼包裝您的代碼:
let Array =[]
cy.get('.tag-wrapper-item').each(($pills) => {
cy.log($pills)
// cy.log('Success')
Array.push($pills)
cy.log(Array.length)
})
cy.then(() => {
cy.log(Array.length)
for (const element of Array) {
cy.wrap(element).click()
cy.wrap(element).find('.--tag.tag-link.--active.tag-selector-button-link').click()
var OneOffModel = element.text()
cy.get('.heading-markdown').contains(OneOffModel)
cy.go('back')
}
})
uj5u.com熱心網友回復:
更好的方法可能是計算.tag-wrapper-item并回圈
cy.get('.tag-wrapper-item')
.its('length')
.then(count => {
for (let index = 0; index < count; index ) {
cy.get('.tag-wrapper-item').eq(index)
.click()
cy.get('.tag-wrapper-item').eq(index)
.find('.--tag.tag-link.--active.tag-selector-button-link')
.click()
cy.get('.tag-wrapper-item').eq(index)
.invoke('text')
.then(OneOffModel => {
cy.get('.heading-markdown').contains(OneOffModel)
})
cy.go('back')
}
})
如果您為回圈中的每個元素設定別名,賽普拉斯將在您讀取別名時嘗試克服從 DOM 分離的錯誤
cy.get('.tag-wrapper-item')
.its('length')
.then(count => {
for (let index = 0; index < count; index ) {
cy.get('.tag-wrapper-item').eq(index)
.as('current')
.click()
cy.get('@current')
.find('.--tag.tag-link.--active.tag-selector-button-link')
.click()
cy.get('@current')
.invoke('text')
.then(OneOffModel => {
cy.get('.heading-markdown').contains(OneOffModel)
})
cy.go('back')
}
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/535776.html
標籤:数组for循环柏
上一篇:如何在沒有numpy的情況下在pyhton中將兩個矩陣相乘?
下一篇:根據小時選擇串列中的資料幀
