Automated tests 使用cypress定期检索和比较元素的样式属性

Automated tests 使用cypress定期检索和比较元素的样式属性,automated-tests,cypress,ui-testing,Automated Tests,Cypress,Ui Testing,我有一个时间指示器,它在一个时间刻度上移动,指示器的style属性值每x毫秒不断变化,我需要获取、存储和比较以前捕获的值是否大于最新值 初始值: 最新值: 逻辑是,从一个点(左10)开始,它每秒钟向左移动一次(左-0,-1,-2,-3…) 我尝试了几种方法,其中一种是在同一个“cy.then”中捕获,但在这种情况下,元素将不具有最近的值。到目前为止,我试过这个。它获取值,在regex的帮助下,我得到了一个“可比较”的值,但是我如何存储/比较这些值呢?此外,如果需要比较两个以上的值,最好的方法

我有一个时间指示器,它在一个时间刻度上移动,指示器的style属性值每x毫秒不断变化,我需要获取、存储和比较以前捕获的值是否大于最新值

初始值:

最新值:

逻辑是,从一个点(左10)开始,它每秒钟向左移动一次(左-0,-1,-2,-3…)

我尝试了几种方法,其中一种是在同一个“cy.then”中捕获,但在这种情况下,元素将不具有最近的值。到目前为止,我试过这个。它获取值,在regex的帮助下,我得到了一个“可比较”的值,但是我如何存储/比较这些值呢?此外,如果需要比较两个以上的值,最好的方法是什么

const BTN_CONTROL_TIMEINDICATOR = '#currentTimeIndicator'
  static verifyTimeLapse() {
        //wip
        var initialVal, nextVal
        initialVal = this.getAnyValueOfAnElement(BTN_CONTROL_TIMEINDICATOR)
        cy.wait(500)
        nextVal = this.getAnyValueOfAnElement(BTN_CONTROL_TIMEINDICATOR)
        cy.log(initialVal > nextVal) 
    }

  static getAnyValueOfAnElement(element) {
        //wip
        cy.get(element)
           .then(($ele) => {
               const val=$ele.attr('style').replace(/[^\d.-]/g, '')
               cy.log(val)
               // return does not work 
            })
    }
cy.log:


我不知道初始值来自哪里。但在它改变之前,可能在页面加载上,可能在单击时作为第一个作业,等等,您可以这样做:

let item=document.querySelector(“currentTimeIndicator”);
item.dataset.left=parseFloat(item.style.left);
控制台日志(项目)

页面对象不能很好地与Cypress命令队列配合使用,下面是使用自定义命令时可能要做的事情

/*获取保留在px中的CSS数值*/
add('getTimescaleValue',()=>{
cy.get(“#currentTimeIndicator”)
。然后($el=>+$el[0]。style.left.replace('px','')
})
/*获取一系列时间刻度值*/
add('getTimescaleValues',({numValues,waitBevering})=>{
常量值=[];
Cypress.u0.times(numvalue,()=>{//重复内部命令n次
cy.getTimescaleValue()
.then(value=>values.push(value))//保存值
.等待(等待)
})
返回cy.wrap(值);
})
/*断言按降序排列的值序列*/
add('valuesAreDescending',{prevSubject:true},(values)=>{
值。减少((上一个,当前)=>{
if(prev){//首先跳过(没有要比较的prev)
expect(prev).to.be.gt(current)//断言值对
}
回流
});
})
它('检查时间线',()=>{
cy.getTimescaleValues({numValues:10,waitBetween:100})
.valuesAreDescending()
})
日志

断言 预计63岁将高于58岁 断言 预计58人将高于48人 断言 预计48人将超过43人 断言 预计43岁将高于33岁 断言 预计33岁将高于23岁 断言 预计23岁将高于18岁 断言 预计18岁将高于13岁 断言 预计13人将超过3人 断言 预计3将高于-2
不幸的是,它不起作用。为什么?您是否收到任何错误?是的,它读取的是未捕获的TypeError:无法在2:6读取null属性“dataset”,因此当您调用该代码时,没有可选择的项。这应该是一个时间问题。它像一个魅力和感谢解释它的评论。