【发布时间】:2021-02-27 12:18:40
【问题描述】:
我有一个来自 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"}
/>
这是我的赛普拉斯代码:
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? 但现在不行了。
【问题讨论】:
-
你能把错误截图也贴出来吗?
-
问题是我没有收到错误,测试通过但滑块没有移动,它停留在原处
-
你可以试试这个 -
const nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set; describe('Changing Slider', () => { it('Updates the value and UI when changing a range input', () => { cy.get('.sliderBorrow').then(($range) => { const range = $range[0]; nativeInputValueSetter.call(range, 23000); range.dispatchEvent(new Event('change', { value: 23000, bubbles: true}));});});}); -
是的,刚刚在github.com/cypress-io/cypress/issues/1570 上打开了该页面。试了一下,现在得到了这个错误:在这一行非法调用 ->> nativeInputValueSetter.call(range, 15000); Cypress 不喜欢 .call 方法
-
在我的测试中,当我得到这样的任务时,我要求开发团队添加链接到滑块上的键值的按钮,然后单击然后检查结果。