微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

cypress 中的滑块调用更改,但文本框中未捕获更改

如何解决cypress 中的滑块调用更改,但文本框中未捕获更改

从滑块输入中验证所选值的断言失败,脚本运行时,滑块位置正确更改但对文本框没有任何影响;框中的值未更新。

describe('Validate the slidervalue',function() {

  it('Should assert the slider value correctly',function() {
    cy.visit('https://demoqa.com/slider')
    cy.get('input[type="range"]').invoke('val',65).trigger('change')
    cy.get('#sliderValue').should('have.value',65)

  })
})

解决方法

我还没有弄清楚 val() 的问题,但 stepup() 有效

it('Should assert the slider value correctly',function() {
  cy.visit('https://demoqa.com/slider')
  cy.get('input[type="range"]')
    .then($el => $el[0].stepUp(40) )  // steps = 65 - 25
    .trigger('change')
  cy.get('#sliderValue').should('have.value',65)     // passes
})

或者使用辅助函数

const stepTo = ($el,target) => {
  const step = $el[0].getAttribute('step') || 1
  const current = $el[0].value
  const diff = target - current
  const steps = Math.abs(diff * step)
  if (diff > 0) {
    $el[0].stepUp(steps)
  else {
    $el[0].stepDown(steps)
  }
}

it('Should assert the slider value correctly',function() {
  cy.visit('https://demoqa.com/slider')
  cy.get('input[type="range"]')
    .then($el => stepTo($el,65) )  
    .trigger('change')
  cy.get('#sliderValue').should('have.value',65)     // passes
})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。