如何在Vaadin 14.10.0中禁用Live Reload Widget?
解决Vaadin开发模式下Live Reload Widget遮挡UI元素的问题
针对你遇到的Vaadin Live Reload Widget(vaadin-devmode-gizmo)遮挡UI导致Selenium测试失败的问题,以下是几种无需切换到生产模式的解决办法:
1. 修正配置参数名
你之前尝试的vaadin.devmode.devTools.enabled参数不正确,正确的用于关闭gizmo的配置项是:
- 在
application.properties(或测试专用的application-test.properties)中添加:vaadin.dev-mode.gizmo.enabled=false - 或者启动时用JVM参数:
-Dvaadin.dev-mode.gizmo.enabled=false
这个参数是Vaadin 23+版本专门用于控制开发模式下gizmo显示的开关,之前的参数名属于混淆了其他配置项。
2. 在Selenium测试中强制隐藏元素
如果配置方法仍不生效,可以在测试代码中直接通过JavaScript隐藏这个gizmo元素,确保测试不受影响:
// 初始化WebDriver后执行该代码 JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("document.querySelector('vaadin-devmode-gizmo').style.display = 'none';");
这种方法无需修改应用配置,直接在测试层面解决遮挡问题,适合需要保留开发模式其他功能的场景。
3. 为测试环境单独禁用Vaadin开发模式
创建测试专用的配置文件application-test.properties,添加以下配置:
vaadin.devmode.enabled=false
然后在运行Selenium测试时激活test profile(Spring Boot默认支持),这样测试环境下Vaadin不会加载开发模式相关组件,但开发环境仍可正常使用开发模式。
测试错误信息确认
你遇到的错误明确指向vaadin-devmode-gizmo拦截了点击事件:
Element
... is not clickable at point (1857, 953). Other element would receive the click:
以上方法都可以有效解决这个遮挡问题,根据你的测试场景选择最合适的方式即可。
内容的提问来源于stack exchange,提问作者ulim
相关产品推荐
相关产品推荐

