数组排序方法在 cypress each 之外不起作用,但在内部起作用
array sort method doesn't work outside cypress each but works inside
这是您可以看到的程序片段:
- var likes = []定义在cy.get之前:
- likes 填充在each()方法里面
我想按照下面的代码对 likes 数组进行排序。但这并没有得到解决。
cy 是柏树
问题是我喜欢在 cy.get(..).each() 之外对这个 likes 数组进行排序,作为不在内部的下一条指令。但这不起作用,我不知道为什么。请问你能帮忙吗?
var likes = []
cy.get('.blogs').each(($el, index) => {
const bcy = cy.wrap($el)
bcy.get('#viewBlog').click()
const like = Math.floor(Math.random() * 10)
likes[index] = like
for(let i=like;i--; )
bcy.get('.blogsDetail').eq(index).contains('likes').click()
})
likes.sort((a, b) => b - a) //Sorting at this place doesn't work
Cypress 命令是异步的。要在 each
命令之后对数组进行排序,您必须使用 then
回调:
var likes = []
cy.get('.blogs').each(($el, index) => {
const bcy = cy.wrap($el)
bcy.get('#viewBlog').click()
const like = Math.floor(Math.random() * 10)
likes[index] = like
for(let i=like;i--; )
bcy.get('.blogsDetail').eq(index).contains('likes').click()
}).then(() => {
likes.sort((a, b) => b - a)
})
当您从 then
中调用 sort
方法时,它会在任何 cypress 命令之前执行,此时您有一个空数组。在调试器中查看:
这是您可以看到的程序片段:
- var likes = []定义在cy.get之前:
- likes 填充在each()方法里面 我想按照下面的代码对 likes 数组进行排序。但这并没有得到解决。 cy 是柏树 问题是我喜欢在 cy.get(..).each() 之外对这个 likes 数组进行排序,作为不在内部的下一条指令。但这不起作用,我不知道为什么。请问你能帮忙吗?
var likes = []
cy.get('.blogs').each(($el, index) => {
const bcy = cy.wrap($el)
bcy.get('#viewBlog').click()
const like = Math.floor(Math.random() * 10)
likes[index] = like
for(let i=like;i--; )
bcy.get('.blogsDetail').eq(index).contains('likes').click()
})
likes.sort((a, b) => b - a) //Sorting at this place doesn't work
Cypress 命令是异步的。要在 each
命令之后对数组进行排序,您必须使用 then
回调:
var likes = []
cy.get('.blogs').each(($el, index) => {
const bcy = cy.wrap($el)
bcy.get('#viewBlog').click()
const like = Math.floor(Math.random() * 10)
likes[index] = like
for(let i=like;i--; )
bcy.get('.blogsDetail').eq(index).contains('likes').click()
}).then(() => {
likes.sort((a, b) => b - a)
})
当您从 then
中调用 sort
方法时,它会在任何 cypress 命令之前执行,此时您有一个空数组。在调试器中查看: