数组排序方法在 cypress each 之外不起作用,但在内部起作用

array sort method doesn't work outside cypress each but works inside

这是您可以看到的程序片段:

  1. var likes = []定义在cy.get之前:
  2. 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 命令之前执行,此时您有一个空数组。在调试器中查看: