在生产模式下从 Vaadin 组件中删除元素 ID

Remove element-ID's from Vaadin components in production mode

我在我的 Vaadin 应用程序中经常使用 setId 进行自动化 UI 测试。出于性能原因,我想在生产模式下删除此 ID。有什么好的方法吗?

您可以像这样检查您当前是否 运行 处于 Vaadin 生产模式

VaadinService.getCurrent().getDeploymentConfiguration().isProductionMode();

因此,如果您使用 setId() 方法设置您的组件 ID,您可以仅在不处于生产模式时轻松设置它,例如:

    boolean isProductionMode = VaadinService.getCurrent().getDeploymentConfiguration().isProductionMode();

    if(!isProductionMode) {
        foo.setID(FOO_ID);
    }

但我会考虑是否完全使用这种方法。您为 Web 测试分配了多少个组件 id?如果这个数字不是很高,性能影响可以忽略不计,而您的代码将因生产模式检查而变得过于混乱。在许多情况下,代码的可读性和简单性比轻微的性能损失更重要。

或者,您可以重写许多组件选择器(假设您正在使用 Vaadin testbench?) using xpath queries which do not depend on component Ids but on some already present information instead - like "location" attribute when using custom layouts、css class、在父容器中的位置等