是否可以验证在Cypress测试的特定阶段没有短暂显示错误消息?
我有一份申请,要求在发送表格之前填写一些字段。填写字段并按下“提交”按钮时,会出现一个模式,说明这将向收件人发送信息。然而,在Cypress中,我也可以看到一条错误消息,上面说“表单无法发送”。这几乎无法手动复制,所以我猜柏树的速度就是它的表现。然而,有时,用户可以看到红色文本闪烁,即使它没有显示足够长的时间来阅读文本。 表单按原样发送,因此不会影响功能 有没有办法让Cypress验证特定文本在测试的特定阶段永远不可见 这是来自DOM的一个片段。此实例中未显示错误消息(我不知道正常运行时如何生成):是否可以验证在Cypress测试的特定阶段没有短暂显示错误消息?,cypress,Cypress,我有一份申请,要求在发送表格之前填写一些字段。填写字段并按下“提交”按钮时,会出现一个模式,说明这将向收件人发送信息。然而,在Cypress中,我也可以看到一条错误消息,上面说“表单无法发送”。这几乎无法手动复制,所以我猜柏树的速度就是它的表现。然而,有时,用户可以看到红色文本闪烁,即使它没有显示足够长的时间来阅读文本。 表单按原样发送,因此不会影响功能 有没有办法让Cypress验证特定文本在测试的特定阶段永远不可见 这是来自DOM的一个片段。此实例中未显示错误消息(我不知道正常运行时如何生成
...
警告
无法发送表单。请稍后再试。
使用的魔法是可能的。到目前为止,在Cypress中还没有预先发出的执行此操作的命令
此方法使用以下技术:
节点
,它可以将标志设置为true
true
让observedErrorMessage=false
cy.visit('index5.html')
// 1. 使用回调初始化MutationObserver
常量观察者=新的变异观察者((记录)=>{
//每次添加或删除时都会调用此命令
//到DOM的节点
记录。forEach((记录)=>{
//addedNodes是“节点”对象的列表
常数{addedNodes}=记录
addedNodes.forEach(addedNode=>{
//你可以使用任何在普通电脑上工作的东西
//这里是HTMLElement
if(addedNode.className=='错误消息'){
//我们稍后将对此作出断言
observedErrorMessage=真
}
})
})
})
// 2. 将MutationObserver连接到您的应用程序代码
cy.document()。然后($document=>
//$document是对“window.document”的引用`
//正在测试的应用程序的
观察员观察($document.body{
childList:true,//为添加/删除节点发出
子树:true//emit用于树中的所有节点
})
)
// 3. 在此处运行导致错误的测试
//换页
cy.wait(2000)
// 4. 断言消息未被观察到
cy.wrap()。然后(()=>{
//我们将其包装在回调中,以便
//“observedErrorMessage”仅在
//前面的Cypress命令已完成
expect(observedErrorMessage).to.be.false
})
这是一个广泛的例子,谢谢!然而(现在我完全暴露了我对JS/HTML等方面的知识的缺乏),元素一直存在,它通常是隐藏的。如果有帮助的话,我用一个HTML片段更新了我的原始问题。嗯,你在用ng开关
隐藏元素?如果ng开关
只是将其从DOM中删除,那么它仍然可以工作。你有没有试过,但没用?