reactjs 我尝试用cypress测试表单中的下拉菜单,它选择值但不提交(手动工作)

k5hmc34c  于 2023-01-12  发布在  React
关注(0)|答案(1)|浏览(108)

这是密码:

cy.get('.react-select-container')
    .first()
    .click();
  cy.get('.react-select__option')
    .eq(1)
    .click();
  cy.get('.react-select-container')
    .eq(1)
    .click();
  cy.get('.react-select__option')
    .eq(1)
    .click();
  cy.wait(500);
  cy.get('.react-select-container')
    .eq(2)
    .click();
  cy.get('.react-select__option')
    .eq(1)
    .click();
  cy.wait(1500);

  cy.get('.btn').click({ force: true });
  cy.wait('@backendReq')
    .its('response.statusCode')
    .should('eq', 200 || 201);

因为它不是常规下拉列表(select),所以我不能使用. select(),但是我模拟了点击,它们显示为选中,但是当我提交表单时,它们并没有被提交

gt0wga4j

gt0wga4j1#

如果在您测试的应用程序中可能的话,我会尝试使用cypress的invoke方法来更改它的value属性。

const value = 'Option'  // The option you'll need to select on dropdown

cy.get('.react-select__option')
    .invoke('attr', 'value', value)

如果您测试的下拉菜单是一个输入,也可以考虑cypress'type(在这种情况下,您需要传递force:true作为选项)。

const value = 'Option'  // The option you'll need to select on dropdown

cy.get('.react-select__option')
    .type(value, { force: true })

作为一种改进,您还可以在选择之后将wait替换为assert,这样在选择成功发生之前它不会继续。
invoketype之后出现类似以下内容:

.should('have.value', value)

相关问题