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
相关产品推荐
相关产品推荐

