Dom 输入cypress后输入类型不是输入值

Dom 输入cypress后输入类型不是输入值,dom,cypress,Dom,Cypress,我刚刚对乌德米做了一个柏树诅咒,我正在努力学习更多。 我使用这个简单的代码行获取一个框,并使用type和enter在框内输入一个值,但是我没有得到任何错误,并且该值没有显示在框内。 这是代码行cy.get('[class=“multiselect\uu tags”]').eq('10')。type('2000000{enter}') 如何我是新的,我使用索引来获取框,因为在页面中有超过18个具有属性的框 cy.get('[class="multiselect__tags"]'

我刚刚对乌德米做了一个柏树诅咒,我正在努力学习更多。 我使用这个简单的代码行获取一个框,并使用type和enter在框内输入一个值,但是我没有得到任何错误,并且该值没有显示在框内。 这是代码行
cy.get('[class=“multiselect\uu tags”]').eq('10')。type('2000000{enter}')
如何我是新的,我使用索引来获取框,因为在页面中有超过18个具有属性的框

cy.get('[class="multiselect__tags"]').eq('10').type('2,000,000{enter}')
    cy.get('[class="multiselect__tags"]').eq('11').type('2,000,000{enter}')
    cy.get('[class="multiselect__tags"]').eq('12').type('1,500{enter}')
这是DOM

下面是它在测试中的表现

该控件允许用户从列表中选择项目,或键入值并按enter键进行选择

结果是将每个选定项目的“标记”添加到输入框中

要通过键入进行选择,这是如何在演示页面上完成的

it('通过键入从vue multiselect中选择',()=>{
cy.viewport(10001000)
参观https://vue-multiselect.js.org/')
cy.get('div.multiselect').eq(0)//没有可使用的id,所以只需获取第一个
.type('NO Dependencies{enter}');//选择一项
cy.get('div.multiselect').eq(0)//与上面相同的父级
.在(()=>{//现在在该选择范围内工作
cy.get('span.multiselect\u标记')//检查标记
.should('have.length',1)//仅选择一个
.invoke('text'))
.should('contain','NO Dependencies')//具有预期的文本
})
cy.get('div.multiselect').eq(0)//相同的选择
.type('GitHub Stars{enter}');//选择另一项
cy.get('div.multiselect').eq(0)
.在(()=>{
cy.get('span.multiselect\u标记')//检查标记
.should('have.length',2)//现在选择两个
.invoke('text'))
.should('contain','GitHub Stars')//具有预期的文本
})
})
单击下拉列表进行选择的步骤

it('selects from vue-multiselect by clicking', () => {

  cy.viewport(1000,1000)
  cy.visit('https://vue-multiselect.js.org/')

  cy.get('div.multiselect').eq(0)
    .within(() => {
      cy.get('div.multiselect__select').click()  // open the dropdown
      cy.get('li.multiselect__element')
        .contains('NO Dependencies')
        .click()                                 // select an item
    })

  cy.get('div.multiselect').eq(0)     // same parent as above
    .within(() => {                   // now work within that select

      cy.get('span.multiselect__tag')          // check the tags
        .should('have.length', 1)              // only one selected
        .invoke('text')              
        .should('contain', 'NO Dependencies')  // has the expected text
    })
})

在您的网页中,multiselect有一个
数据vv name
属性,该属性应精确定位我们想要的特定控件

const controlSelector='div.multiselect[data vv name=“data.eoConditions.liability”];
cy.get(控制选择器)
.type('2000000{enter}');//选择一个项目
cy.get(controlSelector)//与上面相同的父级
.在(()=>{//在该控件内工作
cy.get('span.multiselect\u标记')//检查标记
.should('have.length',1)//仅选择一个
.invoke('text'))
.should('contain','2000000')//具有预期的文本
})
})

我不确定您是否可以在此特定控件上选择两个值,这样做没有意义,因为可能只有一个责任限额。

感谢您的回答,不幸的是,它不起作用。我得到一个错误,cy.type()只能在单个元素上调用,并且我有4个。(它正在重新老化货币下拉列表)我将添加一个更好的DOM。是否可以使用多个属性,也许可以工作?我正在尝试,但仍然没有成功。可以使用“您的第一个示例
cy.get('[name*=“liability”]”)
选择货币下拉框,其中有4个元素(我不需要更改它)。第二个示例
cy.get('[name$=“liability]”“]')
确实运行了测试,但只是说有两个匹配项,匹配的元素不可见。谢谢你的页面,我将阅读,以了解未来。您认为可以打开下拉列表,然后选择值吗?我添加了一个下拉列表的图像,应该可以打开下拉列表并选择限制(我没有意识到它是一个下拉控件)。我将看看如何做到这一点。如果用户可以键入金额,理想情况下,您希望对每种选择方式进行测试(单击下拉菜单并键入值)。