Cypress拾取了错误的元素?

Cypress拾取了错误的元素?,cypress,Cypress,我正在尝试使用Cypress查找并单击此元素: <input class="form-control btn btn-primary" type="button" value="Log out"> 因此,当我运行此程序时,会得到以下响应: expected [ <input.form-control.btn.btn-primary>, 1 more... ] to have value Log out, but the value was Edit. 你能试试吗 cy

我正在尝试使用Cypress查找并单击此元素:

<input class="form-control btn btn-primary" type="button" value="Log out">
因此,当我运行此程序时,会得到以下响应:

expected [ <input.form-control.btn.btn-primary>, 1 more... ] to have value Log out, but the value was Edit.
你能试试吗

cy.get('input').find("[value='Log out']").click()

显然,您需要您的开发人员添加ID,但我知道您的情况

如果只有一个btn主节点,您也可以尝试

cy.get('.btn-primary').click()

这就是对我有效的解决方案:

cy.get("input[type='button']").filter('.btn-primary').eq(1)
.should('have.value','Log out').then(($btn) => {
      $btn.click()
    })

如何为该按钮设置一个唯一的testID,并使其尽可能简单

比如:

data-test-id= "log-out-button" //put that in your button code
然后在柏树:

cy.get('[data-test-id="log-out-button"]')
  .click()
即使您可以设置一个函数来更有效地获取这些testID:

Command.Cypress.add('getTestID', (testID) => {
    cy.get(`[data-test-id="${testId}"]`)
})

现在,您为获取该按钮所做的一切(或者每个testID元素都是:
cy.getTestID('log-out-button'))

你对我的答案有把握吗?@Maccurt-已经用有效的解决方案更新了问题。你应该在下面给出答案。你可以回答自己的问题。我现在不知道我的答案是否有效。我会检查它。我无法控制开发。我已经有了解决方案。
data-test-id= "log-out-button" //put that in your button code
cy.get('[data-test-id="log-out-button"]')
  .click()
Command.Cypress.add('getTestID', (testID) => {
    cy.get(`[data-test-id="${testId}"]`)
})