首页 > 解决方案 > 赛普拉斯事件后如何检查dom上是否存在元素?

问题描述

我读过这篇关于条件测试的文章,但还是不明白。 https://docs.cypress.io/guides/core-concepts/conditional-testing.html#Error-Recovery

我有这种情况,当我在输入中输入一个值然后提交它时,有时,根据我输入的值,它会显示/呈现 DOM 上的另一个元素。

所以我需要做类似的事情:

“在一个事件之后(例如提交输入的值),检查dom上是否有某个元素,然后做一些事情,否则做其他事情”

从我在 cypresss 文档中读到的内容,他们一直说 dom 应该始终相同,根据我们在输入中输入的值出现的元素应该已经存在。

但事实并非如此,这是现代网站的正常行为。

我怎样才能做到这一点?否则,当我尝试“获取”元素时,如果它不存在,它就会崩溃。

人们通常如何管理这个?

标签: cypress

解决方案


我建议将它链接在始终呈现的 DOM 树中的上层元素上,例如:

    cy.get('.app__inner').then($app => {
        if ($app.find('.your_element').is(':visible')) {

            // fill the logic here
        } else {

            // fill the logic here
        }
    });

推荐阅读