submit
提交表单。
在.submit()
之后继续链式调用依赖于目标对象的命令是不安全的。
caution
目标对象必须是一个<form>
元素。
语法
.submit()
.submit(options)
用法
正确用法
cy.get('form').submit() // 提交表单
错误用法
cy.submit() // 错误,不能直接链式调用'cy'
cy.get('input').submit() // 错误,'input'不是表单元素
参数
options (Object)
传入选项对象以改变.submit()
的默认行为。
选项 | 默认值 | 描述 |
---|---|---|
log | true | 在命令日志中显示该命令 |
timeout | defaultCommandTimeout | 在超时前等待.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
时,控制台会输出以下内容:

历史版本
版本 | 变更 |
---|---|
< 0.3.3 | 新增.submit() 命令 |