reactjs - 用 Cypress 移动 slider

标签 reactjs cypress

我有一个来自 rc-slider 的 Slider 组件,我需要 Cypress 来设置它的值。

<Slider
 min={5000}
 max={40000}
 step={500}
 value={this.state.input.amount}
 defaultValue={this.state.input.amount}
 className="sliderBorrow"
 onChange={(value) => this.updateInput("amount",value)} 
 data-cy={"input-slider"}
 />
这是我的 Cypress 代码:
it.only("Changing slider", () => {
    cy.visit("/");
    cy.get(".sliderBorrow")
      .invoke("val", 23000)
      .trigger("change")
      .click({ force: true })
  });
到目前为止我尝试过的方法不起作用。
滑块的起点是20000,试运行到22000,不管我通过什么值,任何数字范围。
以前好像可以用,How do interact correctly with a range input (slider) in Cypress?但不是了。

最佳答案

答案非常非常简单。我发现解决方案是巧合地为我的另一个测试(日期选择器)按下 Enter 键,并意识到按向左或向右箭头键适用于滑块。
您也可以使用 Prop 获得相同的结果。您唯一需要做的就是添加此依赖项:cypress-react-selector 和以下说明:cypress-react-selector
使用示例 {rightarrow}

it("using arrow keys", () => {
  cy.visit("localhost:3000");

  const currentValue  = 20000;
  const targetValue = 35000;
  const increment = 500;
  const steps = (targetValue - currentValue) / increment;
  const arrows = '{rightarrow}'.repeat(steps); 

  cy.get('.rc-slider-handle')
    .should('have.attr', 'aria-valuenow', 20000)
    .type(arrows)

  cy.get('.rc-slider-handle')
    .should('have.attr', 'aria-valuenow', 35000)

})

关于reactjs - 用 Cypress 移动 slider ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64855669/

相关文章:

javascript - 在子元素之前或之后渲染

javascript - 如何让react-datepicker正确显示?

javascript - 如何使用迭代点击cypress中的每种付款方式?

Cypress -等待由UI操作触发的xhr请求

javascript - 使用 cy.get 和 cypress/javascript 在 html 框中输入内容找不到 id

javascript - 等待模式 'please wait' 关闭

javascript - 有没有办法在 React 项目中使用 min.js 文件?这是一个好的做法吗?

javascript - 如何使用 Jest + Enzyme 测试 React 组件的样式?

javascript - React 构造函数声明 props 崩溃智能感知 vscode

graphql - Cypress graphql apollo 调用没有给出结果并自动重试