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