1

我正在尝试使用 Selenium 为基于检票口的 Web 应用程序自动化前端测试。因此我有: - 不同的语言 - 语言属性文件(submit.signup.form=Submit)和使用它们的检票口消息() - 检票口生成的 HTML 页面(输入类型:按钮和值:提交)

如果我继续使用它来自动化测试用例,它将正常工作。当有人决定将属性文件更改为 fi submit.signup.form=Send 时,问题就开始了。如果发生这种情况,我将不得不调整所有 Selenium 测试以再次检查正确的标签以使测试成功(这实际上不适用于该示例,但对于错误消息,这将是一个问题)

现在的问题:

有没有办法让检票口将属性键放入/放入生成的 html 文件中?

期望的好处:我可以使用 Java 并让 Selenium 获取属性 ke 并检查属性文件中的文本。这样,属性文件中标签的更改根本不会影响 Selenium 测试,并且会使其更容易处理。

我很感激任何答案。:)

此致

4

2 回答 2

0

默认情况下,Wicket 以开发模式启动。在开发模式下,您应该看到wicket 标记,您应该查看IDebugSettings ,但是您不会看到从 java 代码中收集的属性,但是您可以将键添加为属性,例如

new Label(getString("propertieKey")).add(new AttributeAppender("key","propertieKey"))
于 2013-01-21T23:57:37.273 回答
0

实际上很容易做到。

放入您的应用程序初始化方法:

    getResourceSettings().getStringResourceLoaders().add(0, new NoResourceLoader());

实现 NoResourceLoader:

public class NoResourceLoader implements IStringResourceLoader {

@Override
public String loadStringResource(Class<?> clazz, String key, Locale locale, String style, String variation) {
     if ("noProperties".equals(style)) {
         return key;
     }
     return null;
}

@Override
public String loadStringResource(Component component, String key, Locale locale, String style, String variation) {
     if ("noProperties".equals(style)) {
         return key;
     }
     return null;
}
}

如果样式设置为 noProperties,则此资源加载器仅返回键。当它返回 null 时,本地化程序将为任何其他调用尝试下一个资源加载器。

为了将样式设置为“noProperties”,我建议在页面的构造函数中添加一个参数检查,以便在您使用参数调用应用程序时设置会话对象的样式。

public BasePage(PageParameters pp) {
    String style = pp.get("st").toOptionalString();
    if (style != null) {
        getSession().setStyle("noProperties");
    }

使用此参数集调用您的第一个 url 就足够了,然后您应该使用属性键而不是 html 中的值遍历整个会话。当应用程序在生产中运行时,我也会禁用此检查。

于 2013-01-23T13:36:37.837 回答