Удаление идентификаторов элементов из компонентов Vaadin в производственном режиме

Я использую setId много для автоматизированных тестов пользовательского интерфейса в моем приложении Vaadin. Из соображений производительности я хотел бы удалить эти идентификаторы в производственном режиме. Есть ли хороший способ сделать это?

1 ответ

Решение

Вы можете проверить, работаете ли вы в Vaadin Production Mode, как это

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

Так что, если вы устанавливаете идентификатор компонентов с помощью setId() Метод, вы можете легко установить его, только когда не в производственном режиме, например:

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

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

Но я бы подумал, стоит ли вообще использовать этот подход. Сколько компонентов вы назначаете идентификатор для веб-тестов? Если число не слишком велико, снижение производительности будет незначительным, в то время как ваш код будет слишком перегружен проверками рабочего режима. Во многих случаях удобочитаемость и простота кода важнее, чем незначительное снижение производительности.

Кроме того, вы можете переписать многие из ваших селекторов компонентов (предполагая, что вы используете Vaadin testbench?), Используя запросы xpath, которые не зависят от идентификаторов компонентов, но вместо этого уже используют некоторую информацию - например, атрибут "location" при использовании пользовательских макетов, класс css, положение в родительском контейнере и т. д.

Другие вопросы по тегам