柏树有没有办法容纳 cy.get(`[data-cy="${test}"]`).filter(':visible') 和 cy.get(`[data-cy= "${test}"]`) 在单个代码中?

Is there a way in cypress to accomodate cy.get(`[data-cy="${test}"]`).filter(':visible') and cy.get(`[data-cy="${test}"]`) in a single code?

我有这样的代码

cy.get(`[data-cy="${test}"]`).filter(':visible').click({force: true})

它适用于某些测试,但对于某些没有“过滤器”的元素,并且那些没有 .filter(':visible') 的元素也能工作,所以我试图在单个代码中容纳这两个函数以使其通用各种按钮。有办法吗?

我尝试了以下几个步骤:

cy.get(`[data-cy="${test}"]`).filter(':visible'|| ':hidden').click({force: true})

不确定它是对还是错,但它的定义不起作用!!

如果您使用 {force: true} 那么元素是可见还是隐藏都没有关系,cypress 会点击它。所以在我看来你不需要过滤器选项。

cy.get(`[data-cy="${test}"]`).click({force: true})

或者,如果您想直接在 .filter 中应用 OR 条件,您可以这样做:

cy.get(`[data-cy="${test}"]`).filter(':visible,:hidden').click({force: true})

或者,如果您想使用 If-Else,您可以这样做:

cy.get(`[data-cy="${test}"]`).then(($ele) => {
  if ($ele.filter(':visible')) {
    cy.wrap($ele).click()
  } else if ($ele.filter(':hidden')) {
    cy.wrap($ele).click({force: true})
  }
})