Я использую setId
для автоматизированных тестов пользовательского интерфейса в приложении Vaadin. По соображениям производительности я хотел бы удалить этот идентификатор в режиме производства. Есть ли хороший способ сделать это?Удалить элементы из компонентов Vaadin в рабочем режиме
ответ
Вы можете проверить, если вы в настоящее время работает в режиме производства Vaadin как этот
VaadinService.getCurrent().getDeploymentConfiguration().isProductionMode();
Так что, если вы настраиваете ваши компоненты идентификатор с setId()
метод, вы можете легко установить его только тогда, когда не в рабочем режиме , например:
boolean isProductionMode = VaadinService.getCurrent().getDeploymentConfiguration().isProductionMode();
if(!isProductionMode) {
foo.setID(FOO_ID);
}
Но я бы подумал, использовать ли этот подход вообще. На сколько компонентов вы назначаете идентификатор для веб-тестов? Если число не является чрезвычайно высоким, удар производительности будет незначительным, в то время как ваш код будет слишком сильно загроможден с проверками производственного режима. Во многих случаях читаемость кода и простота важнее, чем незначительный удар производительности.
В качестве альтернативы, вы можете переписать многие из ваших компонентов селекторов (если вы используете Vaadin testbench?) С помощью запросов XPath, которые не зависят от компонентов идентификаторов, а на некоторой уже имеющуюся информации, а не - как «местоположение» атрибут при использовании custom layouts, CSS класс, положение в родительском контейнере и т. д.
Спасибо, проверка хорошая идея, я мог бы использовать для этого помощник. Я подумаю о твоих приключениях. И нет, я использую Selenium, и из-за редизайна кажется более надежным использовать ID. – riddy
Вы правы, что использование идентификаторов более толерантно. Если вы используете Selenium, вы можете попробовать попробовать Vaadin Testbench. Это просто завернутый селен, приспособленный для Ваадина с некоторыми дополнительными функциями. Однако, это не бесплатно, вам нужно купить лицензию или получить vaadin pro аккаунт. –