You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cypress测试:如何条件判断元素聚焦状态,避免测试执行失败?

解决Cypress中条件检查聚焦元素的问题

要实现无聚焦元素时不失败的条件检查,别用cy.focused(),直接通过浏览器原生的document.activeElement来判断更稳妥,代码示例如下:

cy.window().then((win) => {
  const activeElement = win.document.activeElement;
  // 排除body元素,因为没有聚焦元素时activeElement通常是body
  if (activeElement && activeElement.tagName !== 'BODY') {
    cy.wrap(activeElement).blur();
  }
});

为什么不用cy.focused()?

cy.focused()是Cypress的命令,它必须找到一个聚焦元素,否则会直接导致测试失败,没办法做条件判断。而document.activeElement是浏览器原生API,不管有没有聚焦元素都会返回对应元素(无聚焦时一般是<body>),可以安全地做条件分支。

适配单选/多选下拉框的场景

把这段逻辑封装到你的自定义下拉选择函数里,就能自动处理两种场景:

  • 多选下拉框选完后,若有聚焦的元素(比如选中的选项或输入框),就执行blur()
  • 单选下拉框选完后没有聚焦元素,代码会跳过blur()步骤,不会报错

内容的提问来源于stack exchange,提问作者im-not-you

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 03:59:59