我有一个来自 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/