返回布尔值以检查柏树中是否存在元素的函数 [英] function to return boolean to check if element exist in cypress

查看:44
本文介绍了返回布尔值以检查柏树中是否存在元素的函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何编写函数返回布尔值以检查Cypress中UI上是否存在元素。我有下面的代码,它似乎工作得很好,直到我命中一个元素,我只能通过cy.get('.I_am_selector')获取该元素,并且当我使用我的函数isElementExist时,它总是返回Fasle,因为Cypress.$(.I_am_selector).length == 0;

export function isElementExist(selector: string): boolean {
  try {
    return Cypress.$(`.${selector}`).length > 0;
  } catch (error) {
    return false;
})

推荐答案

Cypresscy.get()已内置重试,因此如果元素正在加载或设置动画,该命令最终将捕获该元素。

但jQuery等效项Cypress.$(.${selector})没有重试。您可以尝试在您的函数中构建一些轮询,但工作量很大,为什么Cypress中没有内置cy.maybe(selector)

如果您知道存在哪些元素,Cypress测试效果最好,它周围有很多文档,但始终存在边缘情况。

我看到的唯一方法是在这里How can manage the application flow, if the element xpath is not present,使用cypress-xpath加载项和count()函数。

cy.xpath(`count(//${element}[@class="${selector}"])`)  // ok with async content
  .then(count => {
    const selector = count ? selector : defaultSelector;

您可能要查找允许您在逗号后提供默认选择符的jQuery OR Selector

如果DOM是这样的

<div class="pick-me">one</div>
<div class="or-me">two</div>

此测试将获取div.pick-me

cy.get('.pick-me, .or-me')            // jQuery OR selector
  .eq(0)                              // in case both match, take first
  .should('have.class', 'pick-me');   // first selector is used

但如果DOM没有第一个类,

<div class="dont-pick-me">one</div>
<div class="or-me">two</div>

该命令将返回默认选择器

cy.get('.pick-me, .or-me')          // jQuery OR selector
  .eq(0)                            // in case both match, take first
  .should('have.class', 'or-me');   // default selector is used

这篇关于返回布尔值以检查柏树中是否存在元素的函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆