Vaadin Notification遮挡后方元素,Testbench测试如何无需改架构解决?
Vaadin 7/8 服务端解决方案(无需修改测试端代码)
- 调整全局通知默认配置:在项目全局UI初始化逻辑中,覆盖
HUMANIZED_MESSAGE类型通知的默认参数,新增setFocusTraversal(false)配置禁用通知抢占UI焦点,同时可搭配setDelayMsec(1000)缩短自动关闭时长,从根源避免通知阻挡操作的问题,该配置对业务功能无侵入性,仅修改通知的交互属性。 - 测试环境专属样式隔离:通过环境变量、启动参数或运行时Profile区分生产/测试环境,测试环境下所有
HUMANIZED_MESSAGE通知自动追加test-mode-notification自定义样式名,再配合全局CSS规则:
.test-mode-notification { pointer-events: none; z-index: 0 !important; }
让通知不会拦截下层元素的点击事件,也不会上浮遮挡可操作元素,生产环境自动恢复默认样式即可。
Testbench 端低改动解决方案(无需调整业务服务端代码)
- 基类注入全局自动清理逻辑:仅需修改Testbench测试基类的
@BeforeEach(或对应版本的前置执行方法)逻辑,新增一个后台定时轮询任务,每300~500ms调用一次NotificationElement.getNotifications()获取当前存在的所有通知,检测到未关闭的通知直接调用close()方法自动清理,所有继承该基类的测试用例无需任何修改即可自动适配,改动范围仅局限于测试基础设施的基类文件。 - 异常兜底重试机制:重写Testbench默认的元素操作工具方法,当捕获到
ElementClickInterceptedException(元素被遮挡异常)时,自动触发一次全局通知清理操作,清理完成后自动重试之前的元素定位/点击逻辑,对上层测试用例完全透明,不需要修改现有测试代码。
内容的提问来源于stack exchange,提问作者george petre
相关产品推荐
相关产品推荐

