【问题标题】:JavaScript array show by index don't work [duplicate]按索引显示的JavaScript数组不起作用[重复]
【发布时间】:2021-07-22 08:28:37
【问题描述】:

我有一个数组,我想逐项显示它以检查金额。当我将 console.log 提供给数组时,它会向我显示元素,当我尝试将其显示为索引时,它会给我 undefined。

let localFinishPrice = []

    cy.get(':nth-child(1) > :nth-child(2) > .bold').invoke("text").then((text)=>{
        let localPrice = parseFloat(text.substring(1))
        localFinishPrice.push(localPrice)
    })


    cy.get('#totals_table > tbody > :nth-child(2) > :nth-child(2)').invoke("text").then((text)=>{
        let localPrice = parseFloat(text.substring(1))
        localFinishPrice.push(localPrice)

    })

    cy.get(':nth-child(3) > :nth-child(2) > .bold').invoke("text").then((text) => {
        let localPrice = parseFloat(text.substring(1))
        localFinishPrice.push(localPrice)

    })

    if(localFinishPrice[0] + localFinishPrice[1] == localFinishPrice[2])
        cy.log("Finish price is ok")
    else
        cy.log("Finish price isn't ok")

Console log from array

Console log from array by index

【问题讨论】:

  • 欢迎来到 Stack Overflow!请带上tour,环顾四周,并通读help center,尤其是How do I ask a good question? 请张贴代码、错误消息、标记和其他文本信息作为文本,而不是作为图片的文字。为什么:meta.stackoverflow.com/q/285551/157247
  • the usual console.log deferred evaluation question 的重复。 (全部:我之前投票为“需要详细信息”,所以不能欺骗。)Cezar,该数组何时为空你打电话给console.log稍后,条目会添加到其中,这就是您稍后在控制台中展开数组时看到它们的原因。有关详细信息,请参阅链接问题的答案。我们都曾一次或多次被这个欺骗过。 :-)

标签: javascript arrays cypress


【解决方案1】:

问题是所有cy.get() 命令都已排队,而if 语句在队列开始运行之前运行得太快。

您必须使用.then() 来正确排序操作

let localFinishPrice = []

cy.get(':nth-child(1) > :nth-child(2) > .bold')                   // queued 1st
  .invoke("text")
  .then(text => {
    let localPrice = parseFloat(text.substring(1))
    localFinishPrice.push(localPrice)
  })

cy.get('#totals_table > tbody > :nth-child(2) > :nth-child(2)')   // queued 2nd
  .invoke("text")
  .then(text => {
    let localPrice = parseFloat(text.substring(1))
    localFinishPrice.push(localPrice)
  })

cy.get(':nth-child(3) > :nth-child(2) > .bold')                   // queued 3rd
  .invoke("text")  
  .then(text => {
    let localPrice = parseFloat(text.substring(1))
    localFinishPrice.push(localPrice)
  })
  .then(() => {                                                   // queued last

    if(localFinishPrice[0] + localFinishPrice[1] == localFinishPrice[2])
      cy.log("Finish price is ok")
    else
      cy.log("Finish price isn't ok")

  })

【讨论】:

    猜你喜欢
    • 2021-05-04
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 2015-04-21
    相关资源
    最近更新 更多