Javascript 如何重置Cypress中不可清除的字段?

Javascript 如何重置Cypress中不可清除的字段?,javascript,testing,automation,cypress,Javascript,Testing,Automation,Cypress,当我尝试用cy.clear重置字段时,元素是下拉列表, 它失败,因为它需要有效的可清除元素 当“@userSettings.actions I reset Gender”时,=>{userSettings.form.getGenderDropdown.clear;} Cypress给出的错误为/ cy.clear失败,因为它需要有效的可清除元素。请参阅 下拉列表中通常有一个输入,因此您可能会使用一些可能的建议- userSettings.form.getGenderDropdown .调用“va

当我尝试用cy.clear重置字段时,元素是下拉列表, 它失败,因为它需要有效的可清除元素

当“@userSettings.actions I reset Gender”时,=>{userSettings.form.getGenderDropdown.clear;}

Cypress给出的错误为/ cy.clear失败,因为它需要有效的可清除元素。

请参阅

下拉列表中通常有一个输入,因此您可能会使用一些可能的建议-

userSettings.form.getGenderDropdown .调用“val”, .触发“改变” userSettings.form.getGenderDropdown .查找“输入” .调用“val”, .触发“改变” 还有一些其他的建议,但有点可疑-

userSettings.form.getGenderDropdown .type{selectall}{backspace} userSettings.form.getGenderDropdown .选择[] 我注意到在柏树测试中

上下文“对输入类型有效”,=>{ 常量输入类型=[ “日期”, “日期时间”, “本地日期时间”, “电子邮件”, “月”, “数字”, “密码”, “搜索”, ‘电话’, “文本”, “时间”, “url”, “一周”, ] inputTypes.forEachtype=>{ ittype,=>{ cy.get`${type}-值为`。清除。然后$input=>{ 预计$input.val.to.equal } } } } 这是一个相当长的有效类型列表,因此如果您在表单控件后面有一个输入,这可能就是您所需要的全部

userSettings.form.getGenderDropdown .查找“输入” 清楚的
这段代码完成了这项工作。请学习它并尝试为您修改它。我选择了一个可用选项,然后从默认选项中删除了“disabled”属性,以便将来选择它

it('example', function () {
    cy.visit('https://www.seleniumeasy.com/test/basic-select-dropdown-demo.html');
    cy.get('[id="select-demo"]').select('Monday')
    cy.get('[id="select-demo"]').find('option').eq(0).then(($elem) => {
        $elem.removeAttr('disabled')
    })
    cy.get('[id="select-demo"]').select('Please select')
})

一种方法是重置表单,假定清除整个表单是您的目标

请看

HTMLFormElement.reset方法恢复表单元素的默认值。此方法的作用与单击表单的重置按钮相同

如果表单控件(如reset按钮)的名称或id为reset,它将屏蔽表单的reset方法。它不会重置输入中的其他属性,例如禁用

HTML

请选择性别 男性的 女的 未知的 试验

它“重置表单值”,=>{ cy.get'select'。应该'have.value',null;//以空值开头 cy.get'select'。选择'Female'//选择一个选项 .应该“有.价值”,“女性”; cy.get'form'。然后$element=>$element[0]。重置 cy.get'select'。应该'have.value',null;//现在再次为空 }
您可以共享您正在尝试此操作的html dom吗?我使用cy.reload处理此类情况,但不确定它是否适用于您的应用程序case@AlapanDas-HTML-DOM在这里,@RosenMihaylov-yes cy.reload与清除字段无关,因为它用于在没有缓存的情况下重新加载。但这只是清除字段上的输入数据,谢谢bdw:@ALAPANDS-这在清除下拉列表的值时起作用。userSettings.form.getGenderDropdown.invoke'val',''从技术上讲,这不是重置,值以空字符串结束,加载时的初始值为null。是的,我正在寻找清除字段的输入数据以及cy.clear工作中的文本字段或文本区域。但是对于下拉列表,cy.invoke是解决方案。userSettings.form.getGenderDropdown.invoke'val','