Skip to main content
Cypress应用

submit

提交表单。

.submit()之后继续链式调用依赖于目标对象的命令是不安全的

caution

目标对象必须是一个<form>元素。

语法

.submit()
.submit(options)

用法

正确用法

cy.get('form').submit() // 提交表单

错误用法

cy.submit() // 错误,不能直接链式调用'cy'
cy.get('input').submit() // 错误,'input'不是表单元素

参数

options (Object)

传入选项对象以改变.submit()的默认行为。

选项默认值描述
logtrue命令日志中显示该命令
timeoutdefaultCommandTimeout超时前等待.submit()完成的时间

生成结果 了解主题管理

  • .submit()返回与原始目标对象相同的内容。
  • .submit()之后继续链式调用依赖于目标对象的命令是不安全的

示例

无参数

Submit只能作用于单个表单

<form id="contact">
<input type="text" name="message" />
<button type="submit">发送</button>
</form>
cy.get('#contact').submit()

注意事项

Submit不是操作命令

.submit()的实现方式与其他操作命令不同,不遵循等待可操作性的相同规则。

.submit()是一个有用的快捷命令。通常用户需要通过不同的"操作"来提交表单,比如点击提交<button>或在键盘上按enter键。

很多时候直接使用.submit()更简洁,并能准确表达你的测试意图。

如果你需要等待元素变为可操作的其他保证,应该使用其他命令如.click().type()

表单验证错误会导致Submit失败

如果提交的表单包含具有客户端验证的输入字段且验证失败,.submit()会失败并列出验证错误。

规则

要求 了解命令链

  • .submit()需要链式调用返回DOM元素的命令。
  • .submit()要求目标元素是form

断言 了解断言

  • .submit()会自动等待链式断言通过。

超时设置 了解超时机制

  • .submit()可能会因等待链式断言通过而超时。

命令日志

提交表单

cy.intercept('POST', '/users', { fixture: 'user' }).as('userSuccess')
cy.get('form').submit()

以上命令会在命令日志中显示为:

命令日志中的submit

当点击命令日志中的submit时,控制台会输出以下内容:

控制台日志中的submit

历史版本

版本变更
< 0.3.3新增.submit()命令

另请参阅