如何用柏树检查体内是不是存在元素?

Posted

技术标签:

【中文标题】如何用柏树检查体内是不是存在元素?【英文标题】:How to check if an element exists within the body with cypress?如何用柏树检查体内是否存在元素? 【发布时间】:2021-08-16 19:01:44 【问题描述】:

我想检查一下nextjs-portal标签是否出现在我的页面正文中,如果出现,则点击它。

我怎样才能用柏树做到这一点?

这可行,但我现在需要 if 块:

cy.get('nextjs-portal').click();

类似

if (cy.get('nextjs-portal')) 
  cy.get('nextjs-portal').click();

【问题讨论】:

【参考方案1】:

如果在这里,你不需要任何东西。如果该元素不存在,cy.get('nextjs-portal') 将超时并且不会发生点击。

如果你真的需要条件测试,可以这样做,但通常是反模式:

cy
  .get('body')
  .then($body => 
    if ($body.find('.nextjs-portal').length) 
      // now you know the element was found in the DOM
     else 
      // your element was not found in the DOM
    
  );

【讨论】:

但是如果元素不存在怎么办?这是一个出现错误的弹出窗口,并不总是存在.. 我认为你应该去掉条件测试的需要 (docs.cypress.io/guides/core-concepts/…),然后在你点击这个元素的地方写一个测试。 @Codehan25:好的,我更新了我的答案,但我仍然认为通常不需要这样的条件。 现在工作:),谢谢! - 但我也会检查文档:)

以上是关于如何用柏树检查体内是不是存在元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何用柏树点击

如何用JS判断网页中某个id的网页元素是不是存在

如何在柏树中获取条纹元素

OCTAVE:检查单元格数组的元素是不是存在

检查所有元素是不是与分而治之相同

如何用jquery判断元素是不是进入可视区域