【问题标题】:Remove element-ID's from Vaadin components in production mode在生产模式下从 Vaadin 组件中删除元素 ID
【发布时间】:2015-03-05 13:59:24
【问题描述】:

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

【问题讨论】:

    标签: html vaadin production-environment vaadin7 test-environments


    【解决方案1】:

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

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

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

        boolean isProductionMode = VaadinService.getCurrent().getDeploymentConfiguration().isProductionMode();
    
        if(!isProductionMode) {
            foo.setID(FOO_ID);
        }
    

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

    或者,您可以使用 xpath 查询重写许多组件选择器(假设您使用的是Vaadin testbench?),这些查询不依赖于组件 ID,而是依赖于一些已经存在的信息 - 例如使用 @987654322 时的“位置”属性@、css 类、在父容器中的位置等

    【讨论】:

    • 谢谢,检查是个好主意,我可以为此使用助手。我会考虑你的意见。不,我正在使用 Selenium,并且由于重新设计,使用 ID 似乎更可靠。
    • 你是对的,使用 Ids 更能容忍变化。如果您使用的是 Selenium,您可能会考虑尝试 Vaadin Testbench。它只是为 Vaadin 调整了包装的 Selenium,并带有一些附加功能。但是,它不是免费的,您需要购买许可证或拥有 vaadin pro 帐户。
    猜你喜欢
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2011-10-31
    相关资源
    最近更新 更多