Javascript 在Cypress,我的表计数来得太晚,无法进行评估

Javascript 在Cypress,我的表计数来得太晚,无法进行评估,javascript,asynchronous,cypress,Javascript,Asynchronous,Cypress,我正在传递一个var“rows”以分配给我的Cypress表长度函数(表行数),但是在我需要在以后的评估中使用它之后,它会被设置(因此它总是失败,因为它仍然是0)。这无疑是因为我的Javascript知识很差,但我怎样才能确保在使用之前设置好它呢 代码: //获取所有当前表行的计数 设行=0; cy.get('table')。find('tr')。its('length')) 。然后((l)=>{ console.log(l+‘检测到行’) 行=l console.log('rows set t

我正在传递一个var“rows”以分配给我的Cypress表长度函数(表行数),但是在我需要在以后的评估中使用它之后,它会被设置(因此它总是失败,因为它仍然是0)。这无疑是因为我的Javascript知识很差,但我怎样才能确保在使用之前设置好它呢

代码:

//获取所有当前表行的计数
设行=0;
cy.get('table')。find('tr')。its('length'))
。然后((l)=>{
console.log(l+‘检测到行’)
行=l
console.log('rows set to',rows)
//注意:该值设置为18,但仅限
//在我完成下面的评估之后
})
cy.get('table')。find('tr')。its('length'))
.should('be.lt',行)
//此时,它始终为0

实际上,这篇Cypress文章解释了为什么变量会被设置为不同步,以及如何使用闭包来处理这一问题:

实际上,这篇Cypress文章解释了为什么变量会被设置为不同步,以及如何使用闭包来处理这一问题:

将其放在链中可以达到以下目的:

// get a count of all the current table rows
    let rows = 0;
    cy.get('table').find('tr').its('length')
        .then((l) => {
          console.log(l + ' rows detected')
          rows = l
          console.log(' rows set to ', rows)
          // NOTE this is set to 18 but only
          // after I have done the evaluation below

       //this should now work
       cy.get('table').find('tr').its('length')
       .should('be.lt', rows) 

    })

把它放在链子里就行了:

// get a count of all the current table rows
    let rows = 0;
    cy.get('table').find('tr').its('length')
        .then((l) => {
          console.log(l + ' rows detected')
          rows = l
          console.log(' rows set to ', rows)
          // NOTE this is set to 18 but only
          // after I have done the evaluation below

       //this should now work
       cy.get('table').find('tr').its('length')
       .should('be.lt', rows) 

    })

尝试将
cy.get('table').find('tr').its('length').should('be.lt',rows)
放在
cy.get(/code>)的第一个实例中(例如
cy.get('table').find('tr').its('length')。然后((l)=>{
)谢谢@ebanster!我在这两个语句之间还有很多其他测试,但它们在这个主get中执行。对不起,它解决了你的问题吗?如果是,我会把它作为答案。是的,它解决了,请解决!再次感谢ebanster。尝试放置
cy.get('table')。查找('tr')。它('length')。应该('be.lt',行)
cy.get
的第一个实例中(例如
cy.get('table').find('tr').its('length')。然后((l)=>{
)不是在外面。谢谢@ebanster!我在这两个语句之间还有很多其他测试,但它们在这个主get中执行。对不起,它解决了你的问题吗?如果是,我会把它作为答案。是的,它解决了,请解决!再次感谢ebanster。