首页 > 解决方案 > 赛普拉斯:比较两列:列值和日期值

问题描述

在此处输入图像描述

我必须首先使用新的处理值检查状态列的值,然后才能比较日期。

如果我必须比较新数据与处理数据,则新日期将大于处理日期。因为数据首先按值排序,然后按日期升序排序。因此,如果我找到两个具有通常状态的值,我可以进行以下比较:

    cy.get('#hometable > tbody > tr > td:nth-child(6)').each(($e, index, $list) => {
        if (index == 0){time_prev=0}
        time = Math.round(new Date($e.text()).getTime() / 1000)
        assert.isBelow(time_prev, time, 'previous date is below actual')
        time_prev = time
    })


 //so I take the value status
 cy.get('#hometable > tbody > tr > td:nth-child(5)').each(($e, index, $list) => {
        const text = $e.text()
        if (text.includes('new')) {
            expect(text).to.eq('\n                                                              new\n                                                           ')

        }
        if (text.includes('processing')) {
            expect(text).to.eq('\n                                                              processing\n                                                           ')
        }

    })

我应该能够在一个周期内同时进行这两个比较,但我不知道从哪里开始

我给出以下错误:

在此处输入图像描述

标签: testingautomated-testscypress

解决方案


您给出的第一个答案在逻辑上很好。我做了一些改变。我注意到它没有进入 then 循环

let arrayOfColumnOne = [];
let arrayOfColumnTwo = [];

cy.get('#hometable > tbody > tr > td:nth-child(6)').each(($e, index, $list) => {
    if (index == 0) {
        time_prev = 0
    }
    time = Math.round(new Date($e.text()).getTime() / 1000)
    arrayOfColumnTwo.push(time)

})

//so I take the value status
cy.get('#hometable > tbody > tr > td:nth-child(5)').each(($e, index, $list) => {
    const text = $e.text()
    arrayOfColumnOne.push(text)
}).then(() => {
    for (let i = 1; i < arrayOfColumnOne; i++) {
        if (!arrayOfColumnTwo[i]) {
            throw new Error('Something is wrong with the array selectors')
        }
        if (arrayOfColumnOne[i].includes('new') || arrayOfColumnOne[i].includes('processing')) {
            expect(arrayOfColumnOne[i]).to.eq('\n                                                              new\n                                                           ')
            assert.isBelow(arrayOfColumnTwo[i - 1], arrayOfColumntwo[i], 'previous date is below actual')
        } else if (arrayOfColumnOne[i].includes('processing') && arrayOfColumnOne[i - 1].includes('new')) {
            expect(text).to.eq('\n                                                              processing\n                                                           ')
            assert.isAbove(arrayOfColumnTwo[i - 1], arrayOfColumntwo[i], 'previous date is below actual')

        } else {
            //some other code
        }
    }
})

在此处输入图像描述

我不明白为什么它不进入then


推荐阅读